From 8c583b8221fa9fa4317d99b94ed54666f5f43fe6 Mon Sep 17 00:00:00 2001 From: Suryanarayana Raju Sangani <ssangani@xilinx.com> Date: Sat, 12 Nov 2022 00:30:28 +0530 Subject: [PATCH] Linux Driver 2022.1.5 patch: Added support for PF/VF 4k queues --- QDMA/linux-kernel/COPYING | 0 QDMA/linux-kernel/LICENSE | 0 QDMA/linux-kernel/Makefile | 4 +- QDMA/linux-kernel/RELEASE | 21 +- QDMA/linux-kernel/apps/Makefile | 4 +- QDMA/linux-kernel/apps/dma-ctl/Makefile | 4 +- QDMA/linux-kernel/apps/dma-ctl/cmd_parse.c | 6 +- QDMA/linux-kernel/apps/dma-ctl/cmd_parse.h | 40 +- QDMA/linux-kernel/apps/dma-ctl/main.c | 4 +- QDMA/linux-kernel/apps/dma-ctl/version.h | 6 +- .../apps/dma-from-device/Makefile | 54 +- .../apps/dma-from-device/dma_from_device.c | 472 +- .../apps/dma-from-device/version.h | 6 +- QDMA/linux-kernel/apps/dma-latency/Makefile | 78 +- QDMA/linux-kernel/apps/dma-latency/Readme.txt | 4 +- QDMA/linux-kernel/apps/dma-latency/dmalat.c | 6 +- .../dma-latency/sample_dma_latency_config.txt | 4 +- QDMA/linux-kernel/apps/dma-latency/version.h | 6 +- QDMA/linux-kernel/apps/dma-perf/Makefile | 78 +- QDMA/linux-kernel/apps/dma-perf/dmaperf.c | 6 +- .../apps/dma-perf/dmaperf_config/mm-bi.zip | Bin 18447 -> 0 bytes .../apps/dma-perf/dmaperf_config/mm-c2h.zip | Bin 18719 -> 0 bytes .../apps/dma-perf/dmaperf_config/mm-h2c.zip | Bin 17146 -> 0 bytes .../apps/dma-perf/dmaperf_config/st-bi.zip | Bin 90077 -> 0 bytes .../dmaperf_config/st-c2h-pfetch1.zip | Bin 102427 -> 0 bytes .../apps/dma-perf/dmaperf_config/st-h2c.zip | Bin 83913 -> 0 bytes QDMA/linux-kernel/apps/dma-perf/version.h | 6 +- QDMA/linux-kernel/apps/dma-to-device/Makefile | 78 +- .../apps/dma-to-device/dma_to_device.c | 530 +- .../linux-kernel/apps/dma-to-device/version.h | 6 +- QDMA/linux-kernel/apps/dma-utils/Makefile | 52 +- .../apps/dma-utils/dma_xfer_utils.c | 428 +- QDMA/linux-kernel/apps/dma-utils/dmactl.c | 13 +- .../apps/dma-utils/dmactl_internal.h | 46 +- QDMA/linux-kernel/apps/dma-utils/dmactl_reg.c | 0 QDMA/linux-kernel/apps/dma-utils/dmautils.c | 0 QDMA/linux-kernel/apps/dma-utils/dmautils.h | 0 QDMA/linux-kernel/apps/dma-utils/dmaxfer.c | 4 +- QDMA/linux-kernel/apps/dma-utils/dmaxfer.h | 0 QDMA/linux-kernel/apps/dma-utils/version.h | 6 +- QDMA/linux-kernel/apps/dma-xfer/Makefile | 4 +- QDMA/linux-kernel/apps/dma-xfer/dmaxfer.c | 4 +- .../apps/dma-xfer/sample_qdma_xfer_config.txt | 4 +- QDMA/linux-kernel/apps/dma-xfer/version.h | 6 +- QDMA/linux-kernel/apps/include/qdma_nl.h | 24 +- .../apps/include/qdma_user_reg_dump.h | 24 +- QDMA/linux-kernel/apps/include/xdev_regs.h | 24 +- QDMA/linux-kernel/bsd_license.txt | 24 +- QDMA/linux-kernel/docs/README | 4 +- QDMA/linux-kernel/docs/dma-ctl.8.gz | Bin QDMA/linux-kernel/docs/dmactl.8.gz | Bin 2338 -> 0 bytes QDMA/linux-kernel/driver/Makefile | 4 +- QDMA/linux-kernel/driver/include/qdma_nl.h | 4 +- .../driver/include/qdma_user_reg_dump.h | 4 +- QDMA/linux-kernel/driver/include/xdev_regs.h | 4 +- QDMA/linux-kernel/driver/libqdma/Makefile | 4 +- .../driver/libqdma/libqdma_config.c | 4 +- .../driver/libqdma/libqdma_config.h | 4 +- .../driver/libqdma/libqdma_export.c | 4 +- .../driver/libqdma/libqdma_export.h | 7 +- .../eqdma_cpm5_access/eqdma_cpm5_access.c | 5 +- .../eqdma_cpm5_access/eqdma_cpm5_access.h | 3 +- .../eqdma_cpm5_access/eqdma_cpm5_reg.h | 526 +- .../eqdma_cpm5_access/eqdma_cpm5_reg_dump.c | 232 +- .../eqdma_soft_access/eqdma_soft_access.c | 124 +- .../eqdma_soft_access/eqdma_soft_access.h | 13 +- .../eqdma_soft_access/eqdma_soft_reg.h | 422 +- .../eqdma_soft_access/eqdma_soft_reg_dump.c | 3939 +++++--- .../libqdma/qdma_access/qdma_access_common.c | 51 +- .../libqdma/qdma_access/qdma_access_common.h | 8 +- .../libqdma/qdma_access/qdma_access_errors.h | 3 +- .../libqdma/qdma_access/qdma_access_export.h | 3 +- .../libqdma/qdma_access/qdma_access_version.h | 5 +- .../qdma_cpm4_access/qdma_cpm4_access.c | 3 +- .../qdma_cpm4_access/qdma_cpm4_access.h | 3 +- .../qdma_cpm4_access/qdma_cpm4_reg.h | 3 +- .../qdma_cpm4_access/qdma_cpm4_reg_dump.c | 3 +- .../driver/libqdma/qdma_access/qdma_list.c | 3 +- .../driver/libqdma/qdma_access/qdma_list.h | 3 +- .../libqdma/qdma_access/qdma_mbox_protocol.c | 3 +- .../libqdma/qdma_access/qdma_mbox_protocol.h | 3 +- .../libqdma/qdma_access/qdma_platform.h | 3 +- .../libqdma/qdma_access/qdma_reg_dump.h | 3 +- .../libqdma/qdma_access/qdma_resource_mgmt.c | 3 +- .../libqdma/qdma_access/qdma_resource_mgmt.h | 3 +- .../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 | 8024 ----------------- .../qdma_soft_access/qdma_soft_access.c | 5 +- .../qdma_soft_access/qdma_soft_access.h | 3 +- .../qdma_soft_access/qdma_soft_reg.h | 3 +- .../linux-kernel/driver/libqdma/qdma_compat.h | 4 +- .../driver/libqdma/qdma_context.c | 6 +- .../driver/libqdma/qdma_context.h | 12 +- .../driver/libqdma/qdma_debugfs.c | 4 +- .../driver/libqdma/qdma_debugfs.h | 4 +- .../driver/libqdma/qdma_debugfs_dev.c | 4 +- .../driver/libqdma/qdma_debugfs_dev.h | 4 +- .../driver/libqdma/qdma_debugfs_queue.c | 4 +- .../driver/libqdma/qdma_debugfs_queue.h | 4 +- QDMA/linux-kernel/driver/libqdma/qdma_descq.c | 4 +- QDMA/linux-kernel/driver/libqdma/qdma_descq.h | 4 +- .../linux-kernel/driver/libqdma/qdma_device.c | 19 +- .../linux-kernel/driver/libqdma/qdma_device.h | 4 +- QDMA/linux-kernel/driver/libqdma/qdma_intr.c | 8 +- QDMA/linux-kernel/driver/libqdma/qdma_intr.h | 4 +- .../driver/libqdma/qdma_license.h | 4 +- QDMA/linux-kernel/driver/libqdma/qdma_mbox.c | 4 +- QDMA/linux-kernel/driver/libqdma/qdma_mbox.h | 4 +- .../driver/libqdma/qdma_platform.c | 4 +- .../driver/libqdma/qdma_platform_env.h | 4 +- QDMA/linux-kernel/driver/libqdma/qdma_regs.c | 4 +- QDMA/linux-kernel/driver/libqdma/qdma_regs.h | 4 +- QDMA/linux-kernel/driver/libqdma/qdma_sriov.c | 4 +- .../linux-kernel/driver/libqdma/qdma_st_c2h.c | 4 +- .../linux-kernel/driver/libqdma/qdma_st_c2h.h | 4 +- .../linux-kernel/driver/libqdma/qdma_thread.c | 4 +- .../linux-kernel/driver/libqdma/qdma_thread.h | 4 +- .../linux-kernel/driver/libqdma/qdma_ul_ext.h | 4 +- QDMA/linux-kernel/driver/libqdma/thread.c | 4 +- QDMA/linux-kernel/driver/libqdma/thread.h | 4 +- QDMA/linux-kernel/driver/libqdma/version.h | 6 +- QDMA/linux-kernel/driver/libqdma/xdev.c | 9 +- QDMA/linux-kernel/driver/libqdma/xdev.h | 4 +- .../driver/make_rules/common_flags.mk | 4 +- .../driver/make_rules/distro_check.mk | 4 +- .../driver/make_rules/kernel_check.mk | 4 +- QDMA/linux-kernel/driver/src/Makefile | 4 +- QDMA/linux-kernel/driver/src/cdev.c | 4 +- QDMA/linux-kernel/driver/src/cdev.h | 4 +- QDMA/linux-kernel/driver/src/nl.c | 4 +- QDMA/linux-kernel/driver/src/nl.h | 4 +- QDMA/linux-kernel/driver/src/pci_ids.h | 18 +- QDMA/linux-kernel/driver/src/qdma_mod.c | 4 +- QDMA/linux-kernel/driver/src/qdma_mod.h | 4 +- QDMA/linux-kernel/driver/src/version.h | 6 +- QDMA/linux-kernel/license.txt | 0 .../license-for-datafile_16bit_pattern.txt | 36 +- .../scripts/qdma_generate_conf_file.sh | 6 +- .../scripts/qdma_run_test_mm_vf.sh | 4 +- QDMA/linux-kernel/scripts/qdma_run_test_pf.sh | 4 +- .../scripts/qdma_run_test_st_vf.sh | 4 +- QDMA/linux-kernel/scripts/qdma_vf_auto_tst.sh | 4 +- 144 files changed, 4902 insertions(+), 19139 deletions(-) mode change 100644 => 100755 QDMA/linux-kernel/COPYING mode change 100644 => 100755 QDMA/linux-kernel/LICENSE mode change 100644 => 100755 QDMA/linux-kernel/Makefile mode change 100644 => 100755 QDMA/linux-kernel/RELEASE mode change 100644 => 100755 QDMA/linux-kernel/apps/Makefile mode change 100644 => 100755 QDMA/linux-kernel/apps/dma-ctl/Makefile mode change 100644 => 100755 QDMA/linux-kernel/apps/dma-ctl/cmd_parse.c mode change 100644 => 100755 QDMA/linux-kernel/apps/dma-ctl/cmd_parse.h mode change 100644 => 100755 QDMA/linux-kernel/apps/dma-ctl/main.c mode change 100644 => 100755 QDMA/linux-kernel/apps/dma-ctl/version.h mode change 100644 => 100755 QDMA/linux-kernel/apps/dma-from-device/Makefile mode change 100644 => 100755 QDMA/linux-kernel/apps/dma-from-device/dma_from_device.c mode change 100644 => 100755 QDMA/linux-kernel/apps/dma-from-device/version.h mode change 100644 => 100755 QDMA/linux-kernel/apps/dma-latency/Makefile mode change 100644 => 100755 QDMA/linux-kernel/apps/dma-latency/Readme.txt mode change 100644 => 100755 QDMA/linux-kernel/apps/dma-latency/dmalat.c mode change 100644 => 100755 QDMA/linux-kernel/apps/dma-latency/sample_dma_latency_config.txt mode change 100644 => 100755 QDMA/linux-kernel/apps/dma-latency/version.h mode change 100644 => 100755 QDMA/linux-kernel/apps/dma-perf/Makefile mode change 100644 => 100755 QDMA/linux-kernel/apps/dma-perf/dmaperf.c delete mode 100644 QDMA/linux-kernel/apps/dma-perf/dmaperf_config/mm-bi.zip delete mode 100644 QDMA/linux-kernel/apps/dma-perf/dmaperf_config/mm-c2h.zip delete mode 100644 QDMA/linux-kernel/apps/dma-perf/dmaperf_config/mm-h2c.zip 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 mode change 100644 => 100755 QDMA/linux-kernel/apps/dma-perf/version.h mode change 100644 => 100755 QDMA/linux-kernel/apps/dma-to-device/Makefile mode change 100644 => 100755 QDMA/linux-kernel/apps/dma-to-device/dma_to_device.c mode change 100644 => 100755 QDMA/linux-kernel/apps/dma-to-device/version.h mode change 100644 => 100755 QDMA/linux-kernel/apps/dma-utils/Makefile mode change 100644 => 100755 QDMA/linux-kernel/apps/dma-utils/dma_xfer_utils.c mode change 100644 => 100755 QDMA/linux-kernel/apps/dma-utils/dmactl.c mode change 100644 => 100755 QDMA/linux-kernel/apps/dma-utils/dmactl_internal.h mode change 100644 => 100755 QDMA/linux-kernel/apps/dma-utils/dmactl_reg.c mode change 100644 => 100755 QDMA/linux-kernel/apps/dma-utils/dmautils.c mode change 100644 => 100755 QDMA/linux-kernel/apps/dma-utils/dmautils.h mode change 100644 => 100755 QDMA/linux-kernel/apps/dma-utils/dmaxfer.c mode change 100644 => 100755 QDMA/linux-kernel/apps/dma-utils/dmaxfer.h mode change 100644 => 100755 QDMA/linux-kernel/apps/dma-utils/version.h mode change 100644 => 100755 QDMA/linux-kernel/apps/dma-xfer/Makefile mode change 100644 => 100755 QDMA/linux-kernel/apps/dma-xfer/dmaxfer.c mode change 100644 => 100755 QDMA/linux-kernel/apps/dma-xfer/sample_qdma_xfer_config.txt mode change 100644 => 100755 QDMA/linux-kernel/apps/dma-xfer/version.h mode change 100644 => 100755 QDMA/linux-kernel/apps/include/qdma_nl.h mode change 100644 => 100755 QDMA/linux-kernel/apps/include/qdma_user_reg_dump.h mode change 100644 => 100755 QDMA/linux-kernel/apps/include/xdev_regs.h mode change 100644 => 100755 QDMA/linux-kernel/bsd_license.txt mode change 100644 => 100755 QDMA/linux-kernel/docs/README mode change 100644 => 100755 QDMA/linux-kernel/docs/dma-ctl.8.gz delete mode 100644 QDMA/linux-kernel/docs/dmactl.8.gz mode change 100644 => 100755 QDMA/linux-kernel/driver/Makefile mode change 100644 => 100755 QDMA/linux-kernel/driver/include/qdma_nl.h mode change 100644 => 100755 QDMA/linux-kernel/driver/include/qdma_user_reg_dump.h mode change 100644 => 100755 QDMA/linux-kernel/driver/include/xdev_regs.h mode change 100644 => 100755 QDMA/linux-kernel/driver/libqdma/Makefile mode change 100644 => 100755 QDMA/linux-kernel/driver/libqdma/libqdma_config.c mode change 100644 => 100755 QDMA/linux-kernel/driver/libqdma/libqdma_config.h mode change 100644 => 100755 QDMA/linux-kernel/driver/libqdma/libqdma_export.c mode change 100644 => 100755 QDMA/linux-kernel/driver/libqdma/libqdma_export.h mode change 100644 => 100755 QDMA/linux-kernel/driver/libqdma/qdma_access/eqdma_cpm5_access/eqdma_cpm5_access.c mode change 100644 => 100755 QDMA/linux-kernel/driver/libqdma/qdma_access/eqdma_cpm5_access/eqdma_cpm5_access.h mode change 100644 => 100755 QDMA/linux-kernel/driver/libqdma/qdma_access/eqdma_cpm5_access/eqdma_cpm5_reg.h mode change 100644 => 100755 QDMA/linux-kernel/driver/libqdma/qdma_access/eqdma_cpm5_access/eqdma_cpm5_reg_dump.c mode change 100644 => 100755 QDMA/linux-kernel/driver/libqdma/qdma_access/eqdma_soft_access/eqdma_soft_access.c mode change 100644 => 100755 QDMA/linux-kernel/driver/libqdma/qdma_access/eqdma_soft_access/eqdma_soft_access.h mode change 100644 => 100755 QDMA/linux-kernel/driver/libqdma/qdma_access/eqdma_soft_access/eqdma_soft_reg.h mode change 100644 => 100755 QDMA/linux-kernel/driver/libqdma/qdma_access/eqdma_soft_access/eqdma_soft_reg_dump.c mode change 100644 => 100755 QDMA/linux-kernel/driver/libqdma/qdma_access/qdma_access_common.c mode change 100644 => 100755 QDMA/linux-kernel/driver/libqdma/qdma_access/qdma_access_common.h mode change 100644 => 100755 QDMA/linux-kernel/driver/libqdma/qdma_access/qdma_access_errors.h mode change 100644 => 100755 QDMA/linux-kernel/driver/libqdma/qdma_access/qdma_access_export.h mode change 100644 => 100755 QDMA/linux-kernel/driver/libqdma/qdma_access/qdma_access_version.h mode change 100644 => 100755 QDMA/linux-kernel/driver/libqdma/qdma_access/qdma_cpm4_access/qdma_cpm4_access.c mode change 100644 => 100755 QDMA/linux-kernel/driver/libqdma/qdma_access/qdma_cpm4_access/qdma_cpm4_access.h mode change 100644 => 100755 QDMA/linux-kernel/driver/libqdma/qdma_access/qdma_cpm4_access/qdma_cpm4_reg.h mode change 100644 => 100755 QDMA/linux-kernel/driver/libqdma/qdma_access/qdma_cpm4_access/qdma_cpm4_reg_dump.c mode change 100644 => 100755 QDMA/linux-kernel/driver/libqdma/qdma_access/qdma_list.c mode change 100644 => 100755 QDMA/linux-kernel/driver/libqdma/qdma_access/qdma_list.h mode change 100644 => 100755 QDMA/linux-kernel/driver/libqdma/qdma_access/qdma_mbox_protocol.c mode change 100644 => 100755 QDMA/linux-kernel/driver/libqdma/qdma_access/qdma_mbox_protocol.h mode change 100644 => 100755 QDMA/linux-kernel/driver/libqdma/qdma_access/qdma_platform.h mode change 100644 => 100755 QDMA/linux-kernel/driver/libqdma/qdma_access/qdma_reg_dump.h mode change 100644 => 100755 QDMA/linux-kernel/driver/libqdma/qdma_access/qdma_resource_mgmt.c mode change 100644 => 100755 QDMA/linux-kernel/driver/libqdma/qdma_access/qdma_resource_mgmt.h delete mode 100644 QDMA/linux-kernel/driver/libqdma/qdma_access/qdma_s80_hard_access/qdma_s80_hard_access.c delete mode 100644 QDMA/linux-kernel/driver/libqdma/qdma_access/qdma_s80_hard_access/qdma_s80_hard_access.h delete mode 100644 QDMA/linux-kernel/driver/libqdma/qdma_access/qdma_s80_hard_access/qdma_s80_hard_reg.h delete mode 100644 QDMA/linux-kernel/driver/libqdma/qdma_access/qdma_s80_hard_access/qdma_s80_hard_reg_dump.c mode change 100644 => 100755 QDMA/linux-kernel/driver/libqdma/qdma_access/qdma_soft_access/qdma_soft_access.c mode change 100644 => 100755 QDMA/linux-kernel/driver/libqdma/qdma_access/qdma_soft_access/qdma_soft_access.h mode change 100644 => 100755 QDMA/linux-kernel/driver/libqdma/qdma_access/qdma_soft_access/qdma_soft_reg.h mode change 100644 => 100755 QDMA/linux-kernel/driver/libqdma/qdma_compat.h mode change 100644 => 100755 QDMA/linux-kernel/driver/libqdma/qdma_context.c mode change 100644 => 100755 QDMA/linux-kernel/driver/libqdma/qdma_context.h mode change 100644 => 100755 QDMA/linux-kernel/driver/libqdma/qdma_debugfs.c mode change 100644 => 100755 QDMA/linux-kernel/driver/libqdma/qdma_debugfs.h mode change 100644 => 100755 QDMA/linux-kernel/driver/libqdma/qdma_debugfs_dev.c mode change 100644 => 100755 QDMA/linux-kernel/driver/libqdma/qdma_debugfs_dev.h mode change 100644 => 100755 QDMA/linux-kernel/driver/libqdma/qdma_debugfs_queue.c mode change 100644 => 100755 QDMA/linux-kernel/driver/libqdma/qdma_debugfs_queue.h mode change 100644 => 100755 QDMA/linux-kernel/driver/libqdma/qdma_descq.c mode change 100644 => 100755 QDMA/linux-kernel/driver/libqdma/qdma_descq.h mode change 100644 => 100755 QDMA/linux-kernel/driver/libqdma/qdma_device.c mode change 100644 => 100755 QDMA/linux-kernel/driver/libqdma/qdma_device.h mode change 100644 => 100755 QDMA/linux-kernel/driver/libqdma/qdma_intr.c mode change 100644 => 100755 QDMA/linux-kernel/driver/libqdma/qdma_intr.h mode change 100644 => 100755 QDMA/linux-kernel/driver/libqdma/qdma_license.h mode change 100644 => 100755 QDMA/linux-kernel/driver/libqdma/qdma_mbox.c mode change 100644 => 100755 QDMA/linux-kernel/driver/libqdma/qdma_mbox.h mode change 100644 => 100755 QDMA/linux-kernel/driver/libqdma/qdma_platform.c mode change 100644 => 100755 QDMA/linux-kernel/driver/libqdma/qdma_platform_env.h mode change 100644 => 100755 QDMA/linux-kernel/driver/libqdma/qdma_regs.c mode change 100644 => 100755 QDMA/linux-kernel/driver/libqdma/qdma_regs.h mode change 100644 => 100755 QDMA/linux-kernel/driver/libqdma/qdma_sriov.c mode change 100644 => 100755 QDMA/linux-kernel/driver/libqdma/qdma_st_c2h.c mode change 100644 => 100755 QDMA/linux-kernel/driver/libqdma/qdma_st_c2h.h mode change 100644 => 100755 QDMA/linux-kernel/driver/libqdma/qdma_thread.c mode change 100644 => 100755 QDMA/linux-kernel/driver/libqdma/qdma_thread.h mode change 100644 => 100755 QDMA/linux-kernel/driver/libqdma/qdma_ul_ext.h mode change 100644 => 100755 QDMA/linux-kernel/driver/libqdma/thread.c mode change 100644 => 100755 QDMA/linux-kernel/driver/libqdma/thread.h mode change 100644 => 100755 QDMA/linux-kernel/driver/libqdma/version.h mode change 100644 => 100755 QDMA/linux-kernel/driver/libqdma/xdev.c mode change 100644 => 100755 QDMA/linux-kernel/driver/libqdma/xdev.h mode change 100644 => 100755 QDMA/linux-kernel/driver/make_rules/common_flags.mk mode change 100644 => 100755 QDMA/linux-kernel/driver/make_rules/distro_check.mk mode change 100644 => 100755 QDMA/linux-kernel/driver/make_rules/kernel_check.mk mode change 100644 => 100755 QDMA/linux-kernel/driver/src/Makefile mode change 100644 => 100755 QDMA/linux-kernel/driver/src/cdev.c mode change 100644 => 100755 QDMA/linux-kernel/driver/src/cdev.h mode change 100644 => 100755 QDMA/linux-kernel/driver/src/nl.c mode change 100644 => 100755 QDMA/linux-kernel/driver/src/nl.h mode change 100644 => 100755 QDMA/linux-kernel/driver/src/pci_ids.h mode change 100644 => 100755 QDMA/linux-kernel/driver/src/qdma_mod.c mode change 100644 => 100755 QDMA/linux-kernel/driver/src/qdma_mod.h mode change 100644 => 100755 QDMA/linux-kernel/driver/src/version.h mode change 100644 => 100755 QDMA/linux-kernel/license.txt mode change 100644 => 100755 QDMA/linux-kernel/scripts/license-for-datafile_16bit_pattern.txt mode change 100644 => 100755 QDMA/linux-kernel/scripts/qdma_generate_conf_file.sh mode change 100644 => 100755 QDMA/linux-kernel/scripts/qdma_vf_auto_tst.sh diff --git a/QDMA/linux-kernel/COPYING b/QDMA/linux-kernel/COPYING old mode 100644 new mode 100755 diff --git a/QDMA/linux-kernel/LICENSE b/QDMA/linux-kernel/LICENSE old mode 100644 new mode 100755 diff --git a/QDMA/linux-kernel/Makefile b/QDMA/linux-kernel/Makefile old mode 100644 new mode 100755 index a85bc0c..e8fd7de --- a/QDMA/linux-kernel/Makefile +++ b/QDMA/linux-kernel/Makefile @@ -1,8 +1,8 @@ #/* # * This file is part of the Xilinx DMA IP Core driver for Linux # * -# * Copyright (c) 2017-2022, Xilinx, Inc. -# * All rights reserved. +# * 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, diff --git a/QDMA/linux-kernel/RELEASE b/QDMA/linux-kernel/RELEASE old mode 100644 new mode 100755 index 7f3b4c3..67a56ec --- a/QDMA/linux-kernel/RELEASE +++ b/QDMA/linux-kernel/RELEASE @@ -1,9 +1,11 @@ -RELEASE: 2022.1.4 Patch +RELEASE: 2022.1.5 Patch ======================= -This release is validated for - - QDMA4.0 2020.1 Patch based example design - - XCVP1202 for CPM5 2022.1 example design +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 SUPPORTED FEATURES: =================== @@ -121,11 +123,14 @@ CPM5 - 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. + KNOWN ISSUES: ============= - CPM5 Only - - Sufficient host memory is required to accommodate 4K queues. Tested only upto 2099 queues for PFs with our test environment though driver supports 4K queues. - - VF 4K queue support is not fully verified due to pdi issues + - Adding >3000 queues using dma-ctl application throwing an error message even though the queues are added successfully. For now error message can be ignored and this will be fixed in subsequent releases. - All Designs - In interrupt mode, Sometimes completions are not received when C2H PIDX updates are held for 64 descriptors @@ -151,8 +156,8 @@ DRIVER LIMITATIONS: /* * This file is part of the Xilinx DMA IP Core driver for Linux * - * Copyright (c) 2017-2022, Xilinx, Inc. - * All rights reserved. + * 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, diff --git a/QDMA/linux-kernel/apps/Makefile b/QDMA/linux-kernel/apps/Makefile old mode 100644 new mode 100755 index 8df2c52..b4febd2 --- a/QDMA/linux-kernel/apps/Makefile +++ b/QDMA/linux-kernel/apps/Makefile @@ -3,8 +3,8 @@ # * 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) 2018-2022, Xilinx, Inc. All rights reserved. +# * Copyright (c) 2022, 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) diff --git a/QDMA/linux-kernel/apps/dma-ctl/Makefile b/QDMA/linux-kernel/apps/dma-ctl/Makefile old mode 100644 new mode 100755 index 0d7fca6..04a5bed --- a/QDMA/linux-kernel/apps/dma-ctl/Makefile +++ b/QDMA/linux-kernel/apps/dma-ctl/Makefile @@ -3,8 +3,8 @@ # * 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) 2018-2022, Xilinx, Inc. All rights reserved. +# * Copyright (c) 2022, 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) diff --git a/QDMA/linux-kernel/apps/dma-ctl/cmd_parse.c b/QDMA/linux-kernel/apps/dma-ctl/cmd_parse.c old mode 100644 new mode 100755 index 9b1af52..b2a9202 --- a/QDMA/linux-kernel/apps/dma-ctl/cmd_parse.c +++ b/QDMA/linux-kernel/apps/dma-ctl/cmd_parse.c @@ -2,8 +2,8 @@ * 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) 2018-2022, Xilinx, Inc. All rights reserved. + * Copyright (c) 2022, 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) @@ -331,7 +331,7 @@ static int validate_regcmd(enum xnl_op_t qcmd, struct xcmd_reg *regcmd) case XNL_CMD_REG_RD: case XNL_CMD_REG_INFO_READ: case XNL_CMD_REG_WRT: - if ((regcmd->bar != 0) && (regcmd->bar != 2)) { + if ((regcmd->bar != 0) && (regcmd->bar != 2) && (regcmd->bar != 4)) { printf("dmactl: bar %u number out of range\n", regcmd->bar); invalid = -EINVAL; diff --git a/QDMA/linux-kernel/apps/dma-ctl/cmd_parse.h b/QDMA/linux-kernel/apps/dma-ctl/cmd_parse.h old mode 100644 new mode 100755 index c1c224a..82518d8 --- a/QDMA/linux-kernel/apps/dma-ctl/cmd_parse.h +++ b/QDMA/linux-kernel/apps/dma-ctl/cmd_parse.h @@ -1,20 +1,20 @@ -/* - * 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. - * - * 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_ */ +/* + * 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, 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 old mode 100644 new mode 100755 index 3b56f7f..5c3e4c7 --- a/QDMA/linux-kernel/apps/dma-ctl/main.c +++ b/QDMA/linux-kernel/apps/dma-ctl/main.c @@ -2,8 +2,8 @@ * 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) 2018-2022, Xilinx, Inc. All rights reserved. + * Copyright (c) 2022, 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) diff --git a/QDMA/linux-kernel/apps/dma-ctl/version.h b/QDMA/linux-kernel/apps/dma-ctl/version.h old mode 100644 new mode 100755 index 8ca346e..0318816 --- a/QDMA/linux-kernel/apps/dma-ctl/version.h +++ b/QDMA/linux-kernel/apps/dma-ctl/version.h @@ -2,8 +2,8 @@ * 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) 2018-2022, Xilinx, Inc. All rights reserved. + * Copyright (c) 2022, 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) @@ -13,7 +13,7 @@ #define __DMA_CTL_VERSION_H #define PROGNAME "dma-ctl" -#define VERSION "2022.1.0" +#define VERSION "2022.2.0" #define COPYRIGHT "Copyright (c) 2018-2022 Xilinx Inc." #endif diff --git a/QDMA/linux-kernel/apps/dma-from-device/Makefile b/QDMA/linux-kernel/apps/dma-from-device/Makefile old mode 100644 new mode 100755 index 87cd35e..95e66d2 --- a/QDMA/linux-kernel/apps/dma-from-device/Makefile +++ b/QDMA/linux-kernel/apps/dma-from-device/Makefile @@ -1,27 +1,27 @@ -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 +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 old mode 100644 new mode 100755 index 18cda60..30623f4 --- a/QDMA/linux-kernel/apps/dma-from-device/dma_from_device.c +++ b/QDMA/linux-kernel/apps/dma-from-device/dma_from_device.c @@ -1,236 +1,236 @@ -/* - * 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. - * - * 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; -} +/* + * 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, 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 old mode 100644 new mode 100755 index 8211daa..f98c1db --- a/QDMA/linux-kernel/apps/dma-from-device/version.h +++ b/QDMA/linux-kernel/apps/dma-from-device/version.h @@ -2,8 +2,8 @@ * 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) 2018-2022, Xilinx, Inc. All rights reserved. + * Copyright (c) 2022, 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) @@ -13,7 +13,7 @@ #define __DMA_FROM_DEVICE_VERSION_H #define PROGNAME "dma-from-device" -#define VERSION "2022.1.0" +#define VERSION "2022.2.0" #define COPYRIGHT "Copyright (c) 2018-2022 Xilinx Inc." #endif diff --git a/QDMA/linux-kernel/apps/dma-latency/Makefile b/QDMA/linux-kernel/apps/dma-latency/Makefile old mode 100644 new mode 100755 index 8ff6e8e..8e49270 --- a/QDMA/linux-kernel/apps/dma-latency/Makefile +++ b/QDMA/linux-kernel/apps/dma-latency/Makefile @@ -1,39 +1,39 @@ -# -#/* -# * 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. -# * -# * 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 +# +#/* +# * 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, 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 old mode 100644 new mode 100755 index 6e75878..952f1db --- a/QDMA/linux-kernel/apps/dma-latency/Readme.txt +++ b/QDMA/linux-kernel/apps/dma-latency/Readme.txt @@ -1,8 +1,8 @@ /* * This file is part of the Xilinx DMA IP Core driver for Linux * - * Copyright (c) 2018-2022, Xilinx, Inc. - * All rights reserved. + * Copyright (c) 2018-2022, Xilinx, Inc. All rights reserved. + * Copyright (c) 2022, 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 diff --git a/QDMA/linux-kernel/apps/dma-latency/dmalat.c b/QDMA/linux-kernel/apps/dma-latency/dmalat.c old mode 100644 new mode 100755 index 308a50b..24a53aa --- a/QDMA/linux-kernel/apps/dma-latency/dmalat.c +++ b/QDMA/linux-kernel/apps/dma-latency/dmalat.c @@ -2,8 +2,8 @@ * 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) 2018-2022, Xilinx, Inc. All rights reserved. + * Copyright (c) 2022, 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) @@ -871,7 +871,7 @@ static void parse_config_file(const char *cfg_fname) printf("Could not open %s\n", rng_sz_path); exit(1); } - ret = read(rng_sz_fd, &rng_sz[1], 99); + ret = read(rng_sz_fd, &rng_sz[1], 100); if (ret < 0) { printf("Error: Could not read the file\n"); exit(1); 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 old mode 100644 new mode 100755 index 6796428..4ef735e --- a/QDMA/linux-kernel/apps/dma-latency/sample_dma_latency_config.txt +++ b/QDMA/linux-kernel/apps/dma-latency/sample_dma_latency_config.txt @@ -3,8 +3,8 @@ # * 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) 2018-2022, Xilinx, Inc. All rights reserved. + * Copyright (c) 2022, 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) diff --git a/QDMA/linux-kernel/apps/dma-latency/version.h b/QDMA/linux-kernel/apps/dma-latency/version.h old mode 100644 new mode 100755 index 6b6b769..9a3e4af --- a/QDMA/linux-kernel/apps/dma-latency/version.h +++ b/QDMA/linux-kernel/apps/dma-latency/version.h @@ -2,8 +2,8 @@ * 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) 2018-2022, Xilinx, Inc. All rights reserved. + * Copyright (c) 2022, 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) @@ -13,7 +13,7 @@ #define __DMA_LATENCY_VERSION_H #define PROGNAME "dma-latency" -#define VERSION "2022.1.0" +#define VERSION "2022.2.0" #define COPYRIGHT "Copyright (c) 2018-2022 Xilinx Inc." #endif diff --git a/QDMA/linux-kernel/apps/dma-perf/Makefile b/QDMA/linux-kernel/apps/dma-perf/Makefile old mode 100644 new mode 100755 index 54bdb75..bacabd6 --- a/QDMA/linux-kernel/apps/dma-perf/Makefile +++ b/QDMA/linux-kernel/apps/dma-perf/Makefile @@ -1,39 +1,39 @@ -# -#/* -# * 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. -# * -# * 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 +# +#/* +# * 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, 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 old mode 100644 new mode 100755 index 03e3f09..3ff22bf --- a/QDMA/linux-kernel/apps/dma-perf/dmaperf.c +++ b/QDMA/linux-kernel/apps/dma-perf/dmaperf.c @@ -2,8 +2,8 @@ * 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) 2018-2022, Xilinx, Inc. All rights reserved. + * Copyright (c) 2022, 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) @@ -1051,7 +1051,7 @@ static void parse_config_file(const char *cfg_fname) printf("Could not open %s\n", rng_sz_path); exit(1); } - ret = read(rng_sz_fd, &rng_sz[1], 99); + ret = read(rng_sz_fd, &rng_sz[1], 100); if (ret < 0) { printf("Error: Could not read the file\n"); exit(1); diff --git a/QDMA/linux-kernel/apps/dma-perf/dmaperf_config/mm-bi.zip b/QDMA/linux-kernel/apps/dma-perf/dmaperf_config/mm-bi.zip deleted file mode 100644 index 548e1c8804b13ea7d67fb91e0fb3694e856f291e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18447 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 AQvd(} diff --git a/QDMA/linux-kernel/apps/dma-perf/dmaperf_config/mm-c2h.zip b/QDMA/linux-kernel/apps/dma-perf/dmaperf_config/mm-c2h.zip deleted file mode 100644 index 64f01c3f65065b11324fcbd04798e243c226efba..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18719 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 K!0<#5!~+1M8UarL diff --git a/QDMA/linux-kernel/apps/dma-perf/dmaperf_config/mm-h2c.zip b/QDMA/linux-kernel/apps/dma-perf/dmaperf_config/mm-h2c.zip deleted file mode 100644 index 2ae62697b21ecaa3af4f58b59de729d20471f8d1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17146 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 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 d7463397e04e20c4751af0b759ccf73336ee52e6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 90077 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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 47a9e2bf22af5d74892799394bf2a083759ce543..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 102427 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 a@DtQctZWPn3=FJ{tc-uBF)(oa1n~f<IKGAe 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 bd5d571360ae445644cae508235359bb653dc278..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 83913 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	MZ4nZ# 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 F0RSYKP`>~G diff --git a/QDMA/linux-kernel/apps/dma-perf/version.h b/QDMA/linux-kernel/apps/dma-perf/version.h old mode 100644 new mode 100755 index cd12b6c..392bc47 --- a/QDMA/linux-kernel/apps/dma-perf/version.h +++ b/QDMA/linux-kernel/apps/dma-perf/version.h @@ -2,8 +2,8 @@ * 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) 2018-2022, Xilinx, Inc. All rights reserved. + * Copyright (c) 2022, 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) @@ -13,7 +13,7 @@ #define __DMA_PERF_VERSION_H #define PROGNAME "dma-perf" -#define VERSION "2022.1.0" +#define VERSION "2022.2.0" #define COPYRIGHT "Copyright (c) 2018-2022 Xilinx Inc." #endif diff --git a/QDMA/linux-kernel/apps/dma-to-device/Makefile b/QDMA/linux-kernel/apps/dma-to-device/Makefile old mode 100644 new mode 100755 index 85ceb65..fab351e --- a/QDMA/linux-kernel/apps/dma-to-device/Makefile +++ b/QDMA/linux-kernel/apps/dma-to-device/Makefile @@ -1,39 +1,39 @@ -# -#/* -# * 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. -# * -# * 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 +# +#/* +# * 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, 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 old mode 100644 new mode 100755 index a632472..9f12143 --- a/QDMA/linux-kernel/apps/dma-to-device/dma_to_device.c +++ b/QDMA/linux-kernel/apps/dma-to-device/dma_to_device.c @@ -1,265 +1,265 @@ -/* - * 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. - * - * 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; -} +/* + * 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, 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 old mode 100644 new mode 100755 index 32560b8..2cd20e0 --- a/QDMA/linux-kernel/apps/dma-to-device/version.h +++ b/QDMA/linux-kernel/apps/dma-to-device/version.h @@ -2,8 +2,8 @@ * 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) 2018-2022, Xilinx, Inc. All rights reserved. + * Copyright (c) 2022, 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) @@ -13,7 +13,7 @@ #define __DMA_TO_DEVICE_VERSION_H #define PROGNAME "dma-to-device" -#define VERSION "2022.1.0" +#define VERSION "2022.2.0" #define COPYRIGHT "Copyright (c) 2018-2022 Xilinx Inc." #endif diff --git a/QDMA/linux-kernel/apps/dma-utils/Makefile b/QDMA/linux-kernel/apps/dma-utils/Makefile old mode 100644 new mode 100755 index ec67873..1fb3558 --- a/QDMA/linux-kernel/apps/dma-utils/Makefile +++ b/QDMA/linux-kernel/apps/dma-utils/Makefile @@ -1,26 +1,26 @@ -# -#/* -# * 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. -# * -# * 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 +# +#/* +# * 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, 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 old mode 100644 new mode 100755 index 3d9b224..0dbc313 --- a/QDMA/linux-kernel/apps/dma-utils/dma_xfer_utils.c +++ b/QDMA/linux-kernel/apps/dma-utils/dma_xfer_utils.c @@ -1,214 +1,214 @@ -/* - * 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. - * - * 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; - } -} - +/* + * 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, 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 old mode 100644 new mode 100755 index ba57858..84ef8cc --- a/QDMA/linux-kernel/apps/dma-utils/dmactl.c +++ b/QDMA/linux-kernel/apps/dma-utils/dmactl.c @@ -2,8 +2,8 @@ * 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) 2019-2022, Xilinx, Inc. All rights reserved. + * Copyright (c) 2022, 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) @@ -175,12 +175,11 @@ static int xnl_connect(struct xnl_cb *cb, int vf, void (*log_err)(const char *)) cb->family = CTRL_ATTR_FAMILY_NAME; if (vf) { - attr->nla_len = strlen(XNL_NAME_VF) + 1 + NLA_HDRLEN; - strcpy((char *)(attr + 1), XNL_NAME_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; - strcpy((char *)(attr + 1), XNL_NAME_PF); + 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); diff --git a/QDMA/linux-kernel/apps/dma-utils/dmactl_internal.h b/QDMA/linux-kernel/apps/dma-utils/dmactl_internal.h old mode 100644 new mode 100755 index 8b03854..7283f7c --- a/QDMA/linux-kernel/apps/dma-utils/dmactl_internal.h +++ b/QDMA/linux-kernel/apps/dma-utils/dmactl_internal.h @@ -1,23 +1,23 @@ -/* - * 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_ */ +/* + * 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 old mode 100644 new mode 100755 diff --git a/QDMA/linux-kernel/apps/dma-utils/dmautils.c b/QDMA/linux-kernel/apps/dma-utils/dmautils.c old mode 100644 new mode 100755 diff --git a/QDMA/linux-kernel/apps/dma-utils/dmautils.h b/QDMA/linux-kernel/apps/dma-utils/dmautils.h old mode 100644 new mode 100755 diff --git a/QDMA/linux-kernel/apps/dma-utils/dmaxfer.c b/QDMA/linux-kernel/apps/dma-utils/dmaxfer.c old mode 100644 new mode 100755 index a151a64..db94d7d --- a/QDMA/linux-kernel/apps/dma-utils/dmaxfer.c +++ b/QDMA/linux-kernel/apps/dma-utils/dmaxfer.c @@ -2,8 +2,8 @@ * 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) 2018-2022, Xilinx, Inc. All rights reserved. + * Copyright (c) 2022, 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) diff --git a/QDMA/linux-kernel/apps/dma-utils/dmaxfer.h b/QDMA/linux-kernel/apps/dma-utils/dmaxfer.h old mode 100644 new mode 100755 diff --git a/QDMA/linux-kernel/apps/dma-utils/version.h b/QDMA/linux-kernel/apps/dma-utils/version.h old mode 100644 new mode 100755 index 0a6dabd..30d8b17 --- a/QDMA/linux-kernel/apps/dma-utils/version.h +++ b/QDMA/linux-kernel/apps/dma-utils/version.h @@ -2,8 +2,8 @@ * 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) 2019-2022, Xilinx, Inc. All rights reserved. + * Copyright (c) 2022, 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) @@ -13,7 +13,7 @@ #define __DMA_UTILS_VERSION_H #define LIBNAME "dma-utils" -#define QDMATUILS_VERSION "2022.1.0" +#define QDMATUILS_VERSION "2022.2.0" #define COPYRIGHT "Copyright (c) 2019-2022 Xilinx Inc." #endif diff --git a/QDMA/linux-kernel/apps/dma-xfer/Makefile b/QDMA/linux-kernel/apps/dma-xfer/Makefile old mode 100644 new mode 100755 index dbfeb18..b89fe3b --- a/QDMA/linux-kernel/apps/dma-xfer/Makefile +++ b/QDMA/linux-kernel/apps/dma-xfer/Makefile @@ -3,8 +3,8 @@ # * 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) 2018-2022, Xilinx, Inc. All rights reserved. +# * Copyright (c) 2022, 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) diff --git a/QDMA/linux-kernel/apps/dma-xfer/dmaxfer.c b/QDMA/linux-kernel/apps/dma-xfer/dmaxfer.c old mode 100644 new mode 100755 index 2878e8d..cab6031 --- a/QDMA/linux-kernel/apps/dma-xfer/dmaxfer.c +++ b/QDMA/linux-kernel/apps/dma-xfer/dmaxfer.c @@ -2,8 +2,8 @@ * 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) 2018-2022, Xilinx, Inc. All rights reserved. + * Copyright (c) 2022, 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) 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 old mode 100644 new mode 100755 index 93382da..5f364f0 --- a/QDMA/linux-kernel/apps/dma-xfer/sample_qdma_xfer_config.txt +++ b/QDMA/linux-kernel/apps/dma-xfer/sample_qdma_xfer_config.txt @@ -3,8 +3,8 @@ # * 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) 2018-2022, Xilinx, Inc. All rights reserved. +# * Copyright (c) 2022, 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) diff --git a/QDMA/linux-kernel/apps/dma-xfer/version.h b/QDMA/linux-kernel/apps/dma-xfer/version.h old mode 100644 new mode 100755 index fb29da1..0f1d5ec --- a/QDMA/linux-kernel/apps/dma-xfer/version.h +++ b/QDMA/linux-kernel/apps/dma-xfer/version.h @@ -2,8 +2,8 @@ * 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) 2019-2022, Xilinx, Inc. All rights reserved. + * Copyright (c) 2022, 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) @@ -12,7 +12,7 @@ #define __DMA_XFER_VERSION_H #define PROGNAME "dma-xfer" -#define VERSION "2022.1.0" +#define VERSION "2022.2.0" #define COPYRIGHT "Copyright (c) 2019-2022 Xilinx Inc." #endif diff --git a/QDMA/linux-kernel/apps/include/qdma_nl.h b/QDMA/linux-kernel/apps/include/qdma_nl.h old mode 100644 new mode 100755 index 614bc3f..09d7ad1 --- a/QDMA/linux-kernel/apps/include/qdma_nl.h +++ b/QDMA/linux-kernel/apps/include/qdma_nl.h @@ -1,15 +1,15 @@ -/* - * This file is part of the Xilinx DMA IP Core driver for Linux - * - * Copyright (c) 2018-2022, Xilinx, 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. - */ - +/* + * 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, 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__ /** diff --git a/QDMA/linux-kernel/apps/include/qdma_user_reg_dump.h b/QDMA/linux-kernel/apps/include/qdma_user_reg_dump.h old mode 100644 new mode 100755 index c76a3e7..337ce81 --- a/QDMA/linux-kernel/apps/include/qdma_user_reg_dump.h +++ b/QDMA/linux-kernel/apps/include/qdma_user_reg_dump.h @@ -1,15 +1,15 @@ -/* - * This file is part of the Xilinx DMA IP Core driver for Linux - * - * Copyright (c) 2018-2022, Xilinx, 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. - */ - +/* + * 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, 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__ diff --git a/QDMA/linux-kernel/apps/include/xdev_regs.h b/QDMA/linux-kernel/apps/include/xdev_regs.h old mode 100644 new mode 100755 index 7efbad4..feebb98 --- a/QDMA/linux-kernel/apps/include/xdev_regs.h +++ b/QDMA/linux-kernel/apps/include/xdev_regs.h @@ -1,15 +1,15 @@ -/* - * This file is part of the Xilinx DMA IP Core driver for Linux - * - * Copyright (c) 2018-2022, Xilinx, 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. - */ - +/* + * 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, 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__ diff --git a/QDMA/linux-kernel/bsd_license.txt b/QDMA/linux-kernel/bsd_license.txt old mode 100644 new mode 100755 index 82d71f1..0759917 --- a/QDMA/linux-kernel/bsd_license.txt +++ b/QDMA/linux-kernel/bsd_license.txt @@ -1,12 +1,12 @@ -/* - * This file is part of the Xilinx DMA IP Core driver for Linux - * - * Copyright (c) 2018-2022, Xilinx, 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. - */ - +/* + * 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, 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 old mode 100644 new mode 100755 index 4a8ca14..bc04f89 --- a/QDMA/linux-kernel/docs/README +++ b/QDMA/linux-kernel/docs/README @@ -302,8 +302,8 @@ _____________________________________________________________________________ /* * This file is part of the Xilinx DMA IP Core driver for Linux * - * Copyright (c) 2017-2022, Xilinx, Inc. - * All rights reserved. + * 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, diff --git a/QDMA/linux-kernel/docs/dma-ctl.8.gz b/QDMA/linux-kernel/docs/dma-ctl.8.gz old mode 100644 new mode 100755 diff --git a/QDMA/linux-kernel/docs/dmactl.8.gz b/QDMA/linux-kernel/docs/dmactl.8.gz deleted file mode 100644 index 54119d1b01f92a4a76eed90bf7bcb1b8dd9b7969..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2338 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 YMx*m*^HnO(?$<LgY@Sv7LXUv~06779$^ZZW diff --git a/QDMA/linux-kernel/driver/Makefile b/QDMA/linux-kernel/driver/Makefile old mode 100644 new mode 100755 index 28935bb..9b8e6a3 --- a/QDMA/linux-kernel/driver/Makefile +++ b/QDMA/linux-kernel/driver/Makefile @@ -1,8 +1,8 @@ #/* # * This file is part of the Xilinx DMA IP Core driver for Linux # * -# * Copyright (c) 2017-2022, Xilinx, Inc. -# * All rights reserved. +# * 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, diff --git a/QDMA/linux-kernel/driver/include/qdma_nl.h b/QDMA/linux-kernel/driver/include/qdma_nl.h old mode 100644 new mode 100755 index 82ca667..eaa10d7 --- a/QDMA/linux-kernel/driver/include/qdma_nl.h +++ b/QDMA/linux-kernel/driver/include/qdma_nl.h @@ -1,8 +1,8 @@ /* * This file is part of the Xilinx DMA IP Core driver for Linux * - * Copyright (c) 2017-2022, Xilinx, Inc. - * All rights reserved. + * 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, diff --git a/QDMA/linux-kernel/driver/include/qdma_user_reg_dump.h b/QDMA/linux-kernel/driver/include/qdma_user_reg_dump.h old mode 100644 new mode 100755 index 79c25a9..8975825 --- a/QDMA/linux-kernel/driver/include/qdma_user_reg_dump.h +++ b/QDMA/linux-kernel/driver/include/qdma_user_reg_dump.h @@ -1,8 +1,8 @@ /* * This file is part of the Xilinx DMA IP Core driver for Linux * - * Copyright (c) 2018-2022, Xilinx, Inc. - * All rights reserved. + * Copyright (c) 2018-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, diff --git a/QDMA/linux-kernel/driver/include/xdev_regs.h b/QDMA/linux-kernel/driver/include/xdev_regs.h old mode 100644 new mode 100755 index e27040f..73091dc --- a/QDMA/linux-kernel/driver/include/xdev_regs.h +++ b/QDMA/linux-kernel/driver/include/xdev_regs.h @@ -1,8 +1,8 @@ /* * This file is part of the Xilinx DMA IP Core driver for Linux * - * Copyright (c) 2018-2022, Xilinx, Inc. - * All rights reserved. + * Copyright (c) 2018-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, diff --git a/QDMA/linux-kernel/driver/libqdma/Makefile b/QDMA/linux-kernel/driver/libqdma/Makefile old mode 100644 new mode 100755 index b854f62..3184572 --- a/QDMA/linux-kernel/driver/libqdma/Makefile +++ b/QDMA/linux-kernel/driver/libqdma/Makefile @@ -1,8 +1,8 @@ #/* # * This file is part of the Xilinx DMA IP Core driver for Linux # * -# * Copyright (c) 2017-2022, Xilinx, Inc. -# * All rights reserved. +# * 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, diff --git a/QDMA/linux-kernel/driver/libqdma/libqdma_config.c b/QDMA/linux-kernel/driver/libqdma/libqdma_config.c old mode 100644 new mode 100755 index d3895a4..69fbf63 --- a/QDMA/linux-kernel/driver/libqdma/libqdma_config.c +++ b/QDMA/linux-kernel/driver/libqdma/libqdma_config.c @@ -1,8 +1,8 @@ /* * This file is part of the Xilinx DMA IP Core driver for Linux * - * Copyright (c) 2017-2022, Xilinx, Inc. - * All rights reserved. + * 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, diff --git a/QDMA/linux-kernel/driver/libqdma/libqdma_config.h b/QDMA/linux-kernel/driver/libqdma/libqdma_config.h old mode 100644 new mode 100755 index c0ebb1f..99ae261 --- a/QDMA/linux-kernel/driver/libqdma/libqdma_config.h +++ b/QDMA/linux-kernel/driver/libqdma/libqdma_config.h @@ -1,8 +1,8 @@ /* * This file is part of the Xilinx DMA IP Core driver for Linux * - * Copyright (c) 2017-2022, Xilinx, Inc. - * All rights reserved. + * 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, diff --git a/QDMA/linux-kernel/driver/libqdma/libqdma_export.c b/QDMA/linux-kernel/driver/libqdma/libqdma_export.c old mode 100644 new mode 100755 index 1b2672a..9add26f --- a/QDMA/linux-kernel/driver/libqdma/libqdma_export.c +++ b/QDMA/linux-kernel/driver/libqdma/libqdma_export.c @@ -1,8 +1,8 @@ /* * This file is part of the Xilinx DMA IP Core driver for Linux * - * Copyright (c) 2017-2022, Xilinx, Inc. - * All rights reserved. + * 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, diff --git a/QDMA/linux-kernel/driver/libqdma/libqdma_export.h b/QDMA/linux-kernel/driver/libqdma/libqdma_export.h old mode 100644 new mode 100755 index f9b2eb3..2cf6c27 --- a/QDMA/linux-kernel/driver/libqdma/libqdma_export.h +++ b/QDMA/linux-kernel/driver/libqdma/libqdma_export.h @@ -1,8 +1,8 @@ /* * This file is part of the Xilinx DMA IP Core driver for Linux * - * Copyright (c) 2017-2022, Xilinx, Inc. - * All rights reserved. + * 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, @@ -486,7 +486,8 @@ struct qdma_dev_conf { * @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); + void (*fp_user_isr_handler)(unsigned long dev_hndl, int irq_index, + unsigned long uld); #endif /** * @brief Q interrupt top, 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 old mode 100644 new mode 100755 index 59fc504..239105b --- 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 @@ -1,5 +1,6 @@ /* - * Copyright(c) 2019-2022 Xilinx, Inc. All rights reserved. + * 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, @@ -2776,7 +2777,7 @@ int eqdma_cpm5_get_version(void *dev_hndl, uint8_t is_vf, reg_val = qdma_reg_read(dev_hndl, reg_addr); - qdma_fetch_version_details(is_vf, reg_val, version_info); + qdma_fetch_version_details(dev_hndl, is_vf, reg_val, version_info); return QDMA_SUCCESS; } 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 old mode 100644 new mode 100755 index a302e78..93662d2 --- 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 @@ -1,5 +1,6 @@ /* - * Copyright(c) 2019-2022 Xilinx, Inc. All rights reserved. + * 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, 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 old mode 100644 new mode 100755 index cf3cc13..4027484 --- 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 @@ -1,5 +1,6 @@ /* - * Copyright(c) 2019-2022 Xilinx, Inc. All rights reserved. + * 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, @@ -14,8 +15,8 @@ * the file called "COPYING". */ -#ifndef __EQDMA_SOFT_REG_H -#define __EQDMA_SOFT_REG_H +#ifndef __EQDMA_CPM5_REG_H +#define __EQDMA_CPM5_REG_H #ifdef __cplusplus @@ -73,49 +74,49 @@ extern "C" { 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 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 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 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 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 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 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 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 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 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 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 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) @@ -124,37 +125,37 @@ struct xreg_info *eqdma_cpm5_config_regs_get(void); #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 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 EQDMA_CPM5_CFG_BLK_SCRATCH_ADDR 0x80 #define CFG_BLK_SCRATCH_MASK GENMASK(31, 0) -#define EQDMA_CPM5_CFG_GIC_ADDR 0xA0 +#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 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 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 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 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 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 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) @@ -184,9 +185,9 @@ struct xreg_info *eqdma_cpm5_config_regs_get(void); #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 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 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) @@ -216,10 +217,10 @@ struct xreg_info *eqdma_cpm5_config_regs_get(void); #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 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 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) @@ -227,7 +228,7 @@ struct xreg_info *eqdma_cpm5_config_regs_get(void); #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 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) @@ -235,7 +236,7 @@ struct xreg_info *eqdma_cpm5_config_regs_get(void); #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 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) @@ -243,24 +244,24 @@ struct xreg_info *eqdma_cpm5_config_regs_get(void); #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 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 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 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 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 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 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) @@ -278,7 +279,7 @@ struct xreg_info *eqdma_cpm5_config_regs_get(void); #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 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) @@ -294,14 +295,14 @@ struct xreg_info *eqdma_cpm5_config_regs_get(void); #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 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 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) @@ -313,14 +314,14 @@ struct xreg_info *eqdma_cpm5_config_regs_get(void); #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 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 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) @@ -341,7 +342,7 @@ struct xreg_info *eqdma_cpm5_config_regs_get(void); #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 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) @@ -354,66 +355,66 @@ struct xreg_info *eqdma_cpm5_config_regs_get(void); #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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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) @@ -428,16 +429,16 @@ struct xreg_info *eqdma_cpm5_config_regs_get(void); #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 EQDMA_CPM5_GLBL_ERR_MASK_ADDR 0x24C #define GLBL_ERR_MASK GENMASK(31, 0) -#define EQDMA_CPM5_GLBL_DSC_CFG_ADDR 0x250 +#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 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) @@ -456,20 +457,20 @@ struct xreg_info *eqdma_cpm5_config_regs_get(void); #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 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 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 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 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) @@ -479,14 +480,14 @@ struct xreg_info *eqdma_cpm5_config_regs_get(void); #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 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 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 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) @@ -498,23 +499,23 @@ struct xreg_info *eqdma_cpm5_config_regs_get(void); #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 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 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 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 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 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) @@ -523,68 +524,63 @@ struct xreg_info *eqdma_cpm5_config_regs_get(void); #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 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 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 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_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_CPM5_GLBL_REQ_ERR_MSK_ADDR 0x31C -#define GLBL_REQ_ERR_MSK_MASK GENMASK(31, 0) -#define EQDMA_CPM5_IND_CTXT_DATA_ADDR 0x804 +#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 EQDMA_CPM5_IND_CTXT_MASK_ADDR 0x824 #define IND_CTXT_MASK GENMASK(31, 0) -#define EQDMA_CPM5_IND_CTXT_CMD_ADDR 0x844 +#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 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 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_MASK GENMASK(31, 0) -#define EQDMA_CPM5_C2H_STAT_S_AXIS_WRB_ACCEPTED_ADDR 0xA8C -#define C2H_STAT_S_AXIS_WRB_ACCEPTED_MASK GENMASK(31, 0) -#define EQDMA_CPM5_C2H_STAT_DESC_RSP_PKT_ACCEPTED_ADDR 0xA90 -#define C2H_STAT_DESC_RSP_PKT_ACCEPTED_D_MASK GENMASK(31, 0) -#define EQDMA_CPM5_C2H_STAT_AXIS_PKG_CMP_ADDR 0xA94 -#define C2H_STAT_AXIS_PKG_CMP_MASK GENMASK(31, 0) -#define EQDMA_CPM5_C2H_STAT_DESC_RSP_ACCEPTED_ADDR 0xA98 -#define C2H_STAT_DESC_RSP_ACCEPTED_D_MASK GENMASK(31, 0) -#define EQDMA_CPM5_C2H_STAT_DESC_RSP_CMP_ADDR 0xA9C -#define C2H_STAT_DESC_RSP_CMP_D_MASK GENMASK(31, 0) -#define EQDMA_CPM5_C2H_STAT_WRQ_OUT_ADDR 0xAA0 -#define C2H_STAT_WRQ_OUT_MASK GENMASK(31, 0) -#define EQDMA_CPM5_C2H_STAT_WPL_REN_ACCEPTED_ADDR 0xAA4 -#define C2H_STAT_WPL_REN_ACCEPTED_MASK GENMASK(31, 0) -#define EQDMA_CPM5_C2H_STAT_TOTAL_WRQ_LEN_ADDR 0xAA8 -#define C2H_STAT_TOTAL_WRQ_LEN_MASK GENMASK(31, 0) -#define EQDMA_CPM5_C2H_STAT_TOTAL_WPL_LEN_ADDR 0xAAC -#define C2H_STAT_TOTAL_WPL_LEN_MASK GENMASK(31, 0) -#define EQDMA_CPM5_C2H_BUF_SZ_ADDR 0xAB0 +#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 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) @@ -607,9 +603,9 @@ struct xreg_info *eqdma_cpm5_config_regs_get(void); #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 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 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) @@ -629,13 +625,13 @@ struct xreg_info *eqdma_cpm5_config_regs_get(void); #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 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 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 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) @@ -643,28 +639,31 @@ struct xreg_info *eqdma_cpm5_config_regs_get(void); #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 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 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 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 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_D_MASK GENMASK(31, 0) -#define EQDMA_CPM5_C2H_STAT_DESC_RSP_ERR_ACCEPTED_ADDR 0xB14 -#define C2H_STAT_DESC_RSP_ERR_ACCEPTED_D_MASK GENMASK(31, 0) -#define EQDMA_CPM5_C2H_STAT_DESC_REQ_ADDR 0xB18 -#define C2H_STAT_DESC_REQ_MASK GENMASK(31, 0) -#define EQDMA_CPM5_C2H_STAT_DBG_DMA_ENG_0_ADDR 0xB1C +#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) @@ -677,17 +676,17 @@ struct xreg_info *eqdma_cpm5_config_regs_get(void); #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 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 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 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) @@ -709,84 +708,84 @@ struct xreg_info *eqdma_cpm5_config_regs_get(void); #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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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) @@ -808,7 +807,7 @@ struct xreg_info *eqdma_cpm5_config_regs_get(void); #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 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) @@ -820,93 +819,93 @@ struct xreg_info *eqdma_cpm5_config_regs_get(void); #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 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 EQDMA_CPM5_C2H_DBG_PFCH_ADDR 0xB94 #define C2H_PFCH_DATA_MASK GENMASK(31, 0) -#define EQDMA_CPM5_C2H_INT_DBG_ADDR 0xB98 +#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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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) @@ -914,23 +913,23 @@ struct xreg_info *eqdma_cpm5_config_regs_get(void); #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 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 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 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 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 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 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) @@ -942,34 +941,34 @@ struct xreg_info *eqdma_cpm5_config_regs_get(void); #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 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 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 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 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 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 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 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 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 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) @@ -977,34 +976,34 @@ struct xreg_info *eqdma_cpm5_config_regs_get(void); #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 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 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 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 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 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 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 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 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) @@ -1015,17 +1014,17 @@ struct xreg_info *eqdma_cpm5_config_regs_get(void); #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 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 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 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 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) @@ -1042,34 +1041,34 @@ struct xreg_info *eqdma_cpm5_config_regs_get(void); #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 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 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 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 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 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 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 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 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) @@ -1080,26 +1079,41 @@ struct xreg_info *eqdma_cpm5_config_regs_get(void); #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 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 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 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 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 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) @@ -1217,6 +1231,50 @@ struct xreg_info *eqdma_cpm5_config_regs_get(void); #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 } 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 old mode 100644 new mode 100755 index 38d897c..2c71d01 --- 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 @@ -1,5 +1,6 @@ /* - * Copyright(c) 2019-2022 Xilinx, Inc. All rights reserved. + * 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, @@ -1166,42 +1167,6 @@ static struct regfield_info }; -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", @@ -1251,6 +1216,8 @@ static struct regfield_info 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}, }; @@ -1258,6 +1225,8 @@ static struct regfield_info 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}, }; @@ -1265,6 +1234,8 @@ static struct regfield_info 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}, }; @@ -1272,6 +1243,8 @@ static struct regfield_info 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}, }; @@ -1279,6 +1252,8 @@ static struct regfield_info 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}, }; @@ -1286,6 +1261,8 @@ static struct regfield_info 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}, }; @@ -1293,6 +1270,8 @@ static struct regfield_info 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}, }; @@ -1300,6 +1279,8 @@ static struct regfield_info 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}, }; @@ -1307,6 +1288,8 @@ static struct regfield_info 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}, }; @@ -1314,6 +1297,8 @@ static struct regfield_info 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}, }; @@ -1506,6 +1491,8 @@ static struct regfield_info 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}, }; @@ -1513,6 +1500,8 @@ static struct regfield_info 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}, }; @@ -1520,6 +1509,8 @@ static struct regfield_info 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}, }; @@ -2690,6 +2681,57 @@ static struct regfield_info 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, @@ -3147,18 +3189,6 @@ static struct xreg_info eqdma_cpm5_config_regs[] = { 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, @@ -3191,61 +3221,61 @@ static struct xreg_info eqdma_cpm5_config_regs[] = { }, {"C2H_STAT_S_AXIS_C2H_ACCEPTED", 0xa88, 1, 0, 0, 0, - 1, QDMA_ST_MODE, QDMA_REG_READ_PF_VF, + 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, - 1, QDMA_ST_MODE, QDMA_REG_READ_PF_VF, + 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, - 1, QDMA_ST_MODE, QDMA_REG_READ_PF_VF, + 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, - 1, QDMA_ST_MODE, QDMA_REG_READ_PF_VF, + 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, - 1, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY, + 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, - 1, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY, + 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, - 1, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY, + 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, - 1, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY, + 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, - 1, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY, + 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, - 1, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY, + 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 }, @@ -3299,13 +3329,13 @@ static struct xreg_info eqdma_cpm5_config_regs[] = { }, {"C2H_PFCH_CFG_1", 0xa80, 1, 0, 0, 0, - 0, QDMA_COMPLETION_MODE, QDMA_REG_READ_PF_ONLY, + 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_COMPLETION_MODE, QDMA_REG_READ_PF_ONLY, + 0, QDMA_ST_MODE, QDMA_REG_READ_PF_VF, ARRAY_SIZE(c2h_pfch_cfg_2_field_info), c2h_pfch_cfg_2_field_info }, @@ -3317,43 +3347,43 @@ static struct xreg_info eqdma_cpm5_config_regs[] = { }, {"C2H_STAT_DESC_RSP_DROP_ACCEPTED", 0xb10, 1, 0, 0, 0, - 1, QDMA_ST_MODE, QDMA_REG_READ_PF_VF, + 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, - 1, QDMA_ST_MODE, QDMA_REG_READ_PF_VF, + 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, - 1, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY, + 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, - 1, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY, + 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, - 1, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY, + 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, - 1, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY, + 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, - 1, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY, + 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 }, @@ -3371,25 +3401,25 @@ static struct xreg_info eqdma_cpm5_config_regs[] = { }, {"STAT_NUM_WRB_IN", 0xb34, 1, 0, 0, 0, - 1, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY, + 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, - 1, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY, + 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, - 1, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY, + 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, - 1, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY, + 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 }, @@ -3647,13 +3677,13 @@ static struct xreg_info eqdma_cpm5_config_regs[] = { }, {"C2H_STAT_HAS_CMPT_ACCEPTED", 0xbec, 1, 0, 0, 0, - 1, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY, + 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, - 1, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY, + 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 }, @@ -3695,31 +3725,31 @@ static struct xreg_info eqdma_cpm5_config_regs[] = { }, {"H2C_DBG_REG0", 0xe0c, 1, 0, 0, 0, - 1, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY, + 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, - 1, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY, + 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, - 1, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY, + 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, - 1, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY, + 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, - 1, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY, + 0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY, ARRAY_SIZE(h2c_dbg_reg4_field_info), h2c_dbg_reg4_field_info }, @@ -3737,7 +3767,7 @@ static struct xreg_info eqdma_cpm5_config_regs[] = { }, {"H2C_ALN_DBG_REG0", 0xe28, 1, 0, 0, 0, - 1, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY, + 0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY, ARRAY_SIZE(h2c_aln_dbg_reg0_field_info), h2c_aln_dbg_reg0_field_info }, @@ -3921,6 +3951,48 @@ static struct xreg_info eqdma_cpm5_config_regs[] = { 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 +}, }; 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 old mode 100644 new mode 100755 index f918f1b..19105c1 --- 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 @@ -1,5 +1,6 @@ /* - * Copyright(c) 2019-2022 Xilinx, Inc. All rights reserved. + * 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, @@ -49,12 +50,23 @@ #define EQDMA_MM_C2H_ERR_ALL_MASK 0X70000003 #define EQDMA_MM_H2C0_ERR_ALL_MASK 0X3041013E -/* H2C Throttle settings */ +/* 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_H2C_UODSC_LIMIT 4 +#define EQDMA5_DEFAULT_MAX_DSC_FETCH 3 +#define EQDMA5_DEFAULT_WRB_INT QDMA_WRB_INTERVAL_128 + /** 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) @@ -84,6 +96,9 @@ #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); @@ -1877,6 +1892,34 @@ static int eqdma_indirect_reg_write(void *dev_hndl, enum ind_ctxt_cmd_sel sel, 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 * @@ -2056,6 +2099,8 @@ static void eqdma_fill_intr_ctxt(struct qdma_indirect_intr_ctxt *intr_ctxt) *****************************************************************************/ 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, @@ -2068,6 +2113,7 @@ int eqdma_set_default_global_csr(void *dev_hndl) 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__, @@ -2077,6 +2123,10 @@ int eqdma_set_default_global_csr(void *dev_hndl) 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, @@ -2091,13 +2141,30 @@ int eqdma_set_default_global_csr(void *dev_hndl) 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); + 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); + } else if (eqdma_ip_version == EQDMA_IP_VERSION_5) { + /* For QDMA4.0 and QDMA5.0, HW design and register map + * is same except some performance optimizations + */ + reg_val = + FIELD_SET(GLBL_DSC_CFG_H2C_UODSC_LIMIT_MASK, + EQDMA5_DEFAULT_H2C_UODSC_LIMIT) | + FIELD_SET(GLBL_DSC_CFG_MAXFETCH_MASK, + EQDMA5_DEFAULT_MAX_DSC_FETCH) | + FIELD_SET(GLBL_DSC_CFG_WB_ACC_INT_MASK, + EQDMA5_DEFAULT_WRB_INT); + } else { + qdma_log_error("%s: ip_type = %d is invalid, err:%d\n", + __func__, eqdma_ip_version, + -QDMA_ERR_INV_PARAM); + return -QDMA_ERR_INV_PARAM; + } qdma_reg_write(dev_hndl, EQDMA_GLBL_DSC_CFG_ADDR, reg_val); } @@ -2135,16 +2202,35 @@ int eqdma_set_default_global_csr(void *dev_hndl) 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); + 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); + } else if (eqdma_ip_version == EQDMA_IP_VERSION_5) { + /* For QDMA4.0 and QDMA5.0, HW design and register map + * is same except some performance optimizations + */ + reg_val = + FIELD_SET(H2C_REQ_THROT_PCIE_DATA_THRESH_MASK, + EQDMA5_H2C_THROT_DATA_THRESH) | + FIELD_SET(H2C_REQ_THROT_PCIE_EN_DATA_MASK, + EQDMA5_THROT_EN_DATA) | + FIELD_SET(H2C_REQ_THROT_PCIE_MASK, + EQDMA5_H2C_THROT_REQ_THRESH) | + FIELD_SET(H2C_REQ_THROT_PCIE_EN_REQ_MASK, + EQDMA5_THROT_EN_REQ); + } else { + qdma_log_error("%s: ip_type = %d is invalid, err:%d\n", + __func__, eqdma_ip_version, + -QDMA_ERR_INV_PARAM); + return -QDMA_ERR_INV_PARAM; + } qdma_reg_write(dev_hndl, EQDMA_H2C_REQ_THROT_PCIE_ADDR, reg_val); } @@ -2746,7 +2832,7 @@ int eqdma_get_version(void *dev_hndl, uint8_t is_vf, reg_val = qdma_reg_read(dev_hndl, reg_addr); - qdma_fetch_version_details(is_vf, reg_val, version_info); + qdma_fetch_version_details(dev_hndl, is_vf, reg_val, version_info); return QDMA_SUCCESS; } 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 old mode 100644 new mode 100755 index 1574b44..4cc8ca9 --- 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 @@ -1,5 +1,6 @@ /* - * Copyright(c) 2019-2022 Xilinx, Inc. All rights reserved. + * 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, @@ -217,6 +218,13 @@ struct eqdma_hw_err_info { 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 @@ -232,6 +240,9 @@ 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); 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 old mode 100644 new mode 100755 index 6589573..0905d50 --- 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 @@ -1,5 +1,6 @@ /* - * Copyright(c) 2019-2022 Xilinx, Inc. All rights reserved. + * 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, @@ -255,6 +256,35 @@ struct xreg_info *eqdma_config_regs_get(void); #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) @@ -431,7 +461,9 @@ struct xreg_info *eqdma_config_regs_get(void); #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_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) @@ -505,7 +537,9 @@ struct xreg_info *eqdma_config_regs_get(void); #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_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) @@ -546,6 +580,183 @@ struct xreg_info *eqdma_config_regs_get(void); #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 @@ -562,6 +773,16 @@ struct xreg_info *eqdma_config_regs_get(void); #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 @@ -646,16 +867,6 @@ struct xreg_info *eqdma_config_regs_get(void); #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 @@ -678,35 +889,33 @@ struct xreg_info *eqdma_config_regs_get(void); #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_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_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 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_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_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 @@ -787,31 +996,27 @@ struct xreg_info *eqdma_config_regs_get(void); #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 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_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_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) @@ -1080,6 +1285,10 @@ struct xreg_info *eqdma_config_regs_get(void); #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) @@ -1097,9 +1306,54 @@ struct xreg_info *eqdma_config_regs_get(void); #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 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) @@ -1217,6 +1471,50 @@ struct xreg_info *eqdma_config_regs_get(void); #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 } 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 old mode 100644 new mode 100755 index cd60617..8754fb7 --- 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 @@ -1,5 +1,6 @@ /* - * Copyright(c) 2019-2022 Xilinx, Inc. All rights reserved. + * 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, @@ -476,6 +477,85 @@ static struct regfield_info }; +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", @@ -917,6 +997,10 @@ 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", @@ -1095,6 +1179,10 @@ 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}, }; @@ -1203,1961 +1291,3168 @@ static struct regfield_info static struct regfield_info - ind_ctxt_data_field_info[] = { - {"IND_CTXT_DATA_DATA", - IND_CTXT_DATA_DATA_MASK}, + 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 - ind_ctxt_mask_field_info[] = { - {"IND_CTXT", - IND_CTXT_MASK}, + 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 - 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}, + 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 - c2h_timer_cnt_field_info[] = { - {"C2H_TIMER_CNT_RSVD_1", - C2H_TIMER_CNT_RSVD_1_MASK}, - {"C2H_TIMER_CNT", - C2H_TIMER_CNT_MASK}, + 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 - 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}, + 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 - c2h_stat_s_axis_c2h_accepted_field_info[] = { - {"C2H_STAT_S_AXIS_C2H_ACCEPTED", - C2H_STAT_S_AXIS_C2H_ACCEPTED_MASK}, + 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 - c2h_stat_s_axis_wrb_accepted_field_info[] = { - {"C2H_STAT_S_AXIS_WRB_ACCEPTED", - C2H_STAT_S_AXIS_WRB_ACCEPTED_MASK}, + 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 - c2h_stat_desc_rsp_pkt_accepted_field_info[] = { - {"C2H_STAT_DESC_RSP_PKT_ACCEPTED_D", - C2H_STAT_DESC_RSP_PKT_ACCEPTED_D_MASK}, + 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 - c2h_stat_axis_pkg_cmp_field_info[] = { - {"C2H_STAT_AXIS_PKG_CMP", - C2H_STAT_AXIS_PKG_CMP_MASK}, + 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 - c2h_stat_desc_rsp_accepted_field_info[] = { - {"C2H_STAT_DESC_RSP_ACCEPTED_D", - C2H_STAT_DESC_RSP_ACCEPTED_D_MASK}, + 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 - c2h_stat_desc_rsp_cmp_field_info[] = { - {"C2H_STAT_DESC_RSP_CMP_D", - C2H_STAT_DESC_RSP_CMP_D_MASK}, + 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 - c2h_stat_wrq_out_field_info[] = { - {"C2H_STAT_WRQ_OUT", - C2H_STAT_WRQ_OUT_MASK}, + 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 - c2h_stat_wpl_ren_accepted_field_info[] = { - {"C2H_STAT_WPL_REN_ACCEPTED", - C2H_STAT_WPL_REN_ACCEPTED_MASK}, + 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 - c2h_stat_total_wrq_len_field_info[] = { - {"C2H_STAT_TOTAL_WRQ_LEN", - C2H_STAT_TOTAL_WRQ_LEN_MASK}, + 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 - c2h_stat_total_wpl_len_field_info[] = { - {"C2H_STAT_TOTAL_WPL_LEN", - C2H_STAT_TOTAL_WPL_LEN_MASK}, + 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 - c2h_buf_sz_field_info[] = { - {"C2H_BUF_SZ_IZE", - C2H_BUF_SZ_IZE_MASK}, + 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 - 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}, + 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 - c2h_err_mask_field_info[] = { - {"C2H_ERR_EN", - C2H_ERR_EN_MASK}, + 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 - 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}, + t_field_info[] = { + {"T_USER_CTR_MAX", + T_USER_CTR_MAX_MASK}, }; static struct regfield_info - c2h_fatal_err_mask_field_info[] = { - {"C2H_FATAL_ERR_C2HEN", - C2H_FATAL_ERR_C2HEN_MASK}, + 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 - 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}, + glbl_free_cnt_a0_field_info[] = { + {"GLBL_FREE_CNT_A0_S", + GLBL_FREE_CNT_A0_S_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}, + 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 - 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}, + 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 - 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}, + 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 - 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}, + 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 - c2h_int_timer_tick_field_info[] = { - {"C2H_INT_TIMER_TICK", - C2H_INT_TIMER_TICK_MASK}, + 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 - c2h_stat_desc_rsp_drop_accepted_field_info[] = { - {"C2H_STAT_DESC_RSP_DROP_ACCEPTED_D", - C2H_STAT_DESC_RSP_DROP_ACCEPTED_D_MASK}, + 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 - c2h_stat_desc_rsp_err_accepted_field_info[] = { - {"C2H_STAT_DESC_RSP_ERR_ACCEPTED_D", - C2H_STAT_DESC_RSP_ERR_ACCEPTED_D_MASK}, + 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 - c2h_stat_desc_req_field_info[] = { - {"C2H_STAT_DESC_REQ", - C2H_STAT_DESC_REQ_MASK}, + 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 - 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}, + 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 - 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}, + 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 - 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}, + 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 - 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}, + 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 - 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}, + 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 - 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}, + 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 - 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}, + 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 - 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}, + 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 - 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}, + 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 - 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}, + 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 - 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}, + 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 - 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}, + 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 - 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}, + 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 - 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}, + 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 - 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}, + 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 - 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}, + 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 - 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}, + 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 - 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}, + 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 - 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}, + 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 - 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}, + 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 - 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}, + 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 - 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}, + 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 - 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}, + 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 - 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}, + 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 - 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}, + 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 - 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}, + 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 - 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}, + 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 - 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}, + 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 - 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}, + 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 - 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}, + 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 - c2h_dbg_pfch_field_info[] = { - {"C2H_PFCH_DATA", - C2H_PFCH_DATA_MASK}, + 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 - 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}, + 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 - 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}, + 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 - 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}, + 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 - 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}, + 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 - 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}, + 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 - 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}, + 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 - 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}, + 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 - 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}, + 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 - 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}, + 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 - 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}, + 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 - 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}, + 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 - 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}, + 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 - 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}, + 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 - 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}, + 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 - 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}, + 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 - 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}, + 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 - 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}, + ind_ctxt_data_field_info[] = { + {"IND_CTXT_DATA_DATA", + IND_CTXT_DATA_DATA_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}, + ind_ctxt_mask_field_info[] = { + {"IND_CTXT", + IND_CTXT_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}, + 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_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}, + 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_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}, + 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_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}, + 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_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}, + 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 - 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}, + 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 - h2c_err_mask_field_info[] = { - {"H2C_ERR_EN", - H2C_ERR_EN_MASK}, + 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 - 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}, + 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 - 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}, + c2h_stat_axis_pkg_cmp_field_info[] = { + {"C2H_STAT_AXIS_PKG_CMP", + C2H_STAT_AXIS_PKG_CMP_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}, + c2h_stat_desc_rsp_accepted_field_info[] = { + {"C2H_STAT_DESC_RSP_ACCEPTED_D", + C2H_STAT_DESC_RSP_ACCEPTED_D_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}, + c2h_stat_desc_rsp_cmp_field_info[] = { + {"C2H_STAT_DESC_RSP_CMP_D", + C2H_STAT_DESC_RSP_CMP_D_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}, + c2h_stat_wrq_out_field_info[] = { + {"C2H_STAT_WRQ_OUT", + C2H_STAT_WRQ_OUT_MASK}, }; static struct regfield_info - h2c_dbg_reg4_field_info[] = { - {"H2C_REG4_RDREQ_ADDR", - H2C_REG4_RDREQ_ADDR_MASK}, + c2h_stat_wpl_ren_accepted_field_info[] = { + {"C2H_STAT_WPL_REN_ACCEPTED", + C2H_STAT_WPL_REN_ACCEPTED_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}, + c2h_stat_total_wrq_len_field_info[] = { + {"C2H_STAT_TOTAL_WRQ_LEN", + C2H_STAT_TOTAL_WRQ_LEN_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}, + c2h_stat_total_wpl_len_field_info[] = { + {"C2H_STAT_TOTAL_WPL_LEN", + C2H_STAT_TOTAL_WPL_LEN_MASK}, }; static struct regfield_info - h2c_aln_dbg_reg0_field_info[] = { - {"H2C_ALN_REG0_NUM_PKT_SENT", - H2C_ALN_REG0_NUM_PKT_SENT_MASK}, + c2h_buf_sz_field_info[] = { + {"C2H_BUF_SZ_IZE", + C2H_BUF_SZ_IZE_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}, + 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_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}, + c2h_err_mask_field_info[] = { + {"C2H_ERR_EN", + C2H_ERR_EN_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}, + 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_mm_cmpl_desc_cnt_field_info[] = { - {"C2H_MM_CMPL_DESC_CNT_C2H_CO", - C2H_MM_CMPL_DESC_CNT_C2H_CO_MASK}, + c2h_fatal_err_mask_field_info[] = { + {"C2H_FATAL_ERR_C2HEN", + C2H_FATAL_ERR_C2HEN_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}, + 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 - 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}, + 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_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}, + 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_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}, + c2h_int_timer_tick_field_info[] = { + {"C2H_INT_TIMER_TICK", + C2H_INT_TIMER_TICK_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}, + 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_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}, + 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_mm_perf_mon_data_cnt0_field_info[] = { - {"C2H_MM_PERF_MON_DATA_CNT0_DCNT", - C2H_MM_PERF_MON_DATA_CNT0_DCNT_MASK}, + c2h_stat_desc_req_field_info[] = { + {"C2H_STAT_DESC_REQ", + C2H_STAT_DESC_REQ_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}, + 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_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}, + 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 - 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}, + 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 - 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}, + 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 - h2c_mm_cmpl_desc_cnt_field_info[] = { - {"H2C_MM_CMPL_DESC_CNT_H2C_CO", - H2C_MM_CMPL_DESC_CNT_H2C_CO_MASK}, + 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 - 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}, + 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 - 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}, + 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 - 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}, + 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 - 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}, + 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 - 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}, + 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 - 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}, + 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 - h2c_mm_perf_mon_data_cnt0_field_info[] = { - {"H2C_MM_PERF_MON_DATA_CNT0_DCNT", - H2C_MM_PERF_MON_DATA_CNT0_DCNT_MASK}, + 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 - 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}, + 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 - 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}, + 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_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}, + 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_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}, + 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_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}, + 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_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}, + 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_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}, + 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 xreg_info eqdma_config_regs[] = { -{"CFG_BLK_IDENTIFIER", 0x00, + +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(cfg_blk_identifier_field_info), - cfg_blk_identifier_field_info + ARRAY_SIZE(glbl_req_err_sts_field_info), + glbl_req_err_sts_field_info }, -{"CFG_BLK_PCIE_MAX_PLD_SIZE", 0x08, +{"GLBL_REQ_ERR_MSK", 0x31c, 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 + ARRAY_SIZE(glbl_req_err_msk_field_info), + glbl_req_err_msk_field_info }, -{"CFG_BLK_PCIE_MAX_READ_REQ_SIZE", 0x0c, +{"GLBL_DSC_DBG_LAT0_A", 0x320, 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 + ARRAY_SIZE(glbl_dsc_dbg_lat0_a_field_info), + glbl_dsc_dbg_lat0_a_field_info }, -{"CFG_BLK_SYSTEM_ID", 0x10, +{"GLBL_DSC_DBG_LAT1_A", 0x324, 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 + ARRAY_SIZE(glbl_dsc_dbg_lat1_a_field_info), + glbl_dsc_dbg_lat1_a_field_info }, -{"CFG_BLK_MSIX_ENABLE", 0x014, +{"GLBL_DSC_CRD_CTR0_A", 0x328, 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 + ARRAY_SIZE(glbl_dsc_crd_ctr0_a_field_info), + glbl_dsc_crd_ctr0_a_field_info }, -{"CFG_PCIE_DATA_WIDTH", 0x18, +{"GLBL_DSC_CRD_CTR1_A", 0x32c, 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 + ARRAY_SIZE(glbl_dsc_crd_ctr1_a_field_info), + glbl_dsc_crd_ctr1_a_field_info }, -{"CFG_PCIE_CTL", 0x1c, +{"GLBL_DSC_CRD_CTR2_A", 0x330, 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 + ARRAY_SIZE(glbl_dsc_crd_ctr2_a_field_info), + glbl_dsc_crd_ctr2_a_field_info }, -{"CFG_BLK_MSI_ENABLE", 0x20, +{"GLBL_DSC_CRD_CTR3_A", 0x334, 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 + ARRAY_SIZE(glbl_dsc_crd_ctr3_a_field_info), + glbl_dsc_crd_ctr3_a_field_info }, -{"CFG_AXI_USER_MAX_PLD_SIZE", 0x40, +{"GLBL_DSC_IMM_CRD_CTR0_A", 0x338, 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 + ARRAY_SIZE(glbl_dsc_imm_crd_ctr0_a_field_info), + glbl_dsc_imm_crd_ctr0_a_field_info }, -{"CFG_AXI_USER_MAX_READ_REQ_SIZE", 0x44, +{"GLBL_DSC_IMM_CRD_CTR1_A", 0x33c, 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 + ARRAY_SIZE(glbl_dsc_imm_crd_ctr1_a_field_info), + glbl_dsc_imm_crd_ctr1_a_field_info }, -{"CFG_BLK_MISC_CTL", 0x4c, +{"GLBL_DSC_IMM_CRD_CTR2_A", 0x340, 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 + ARRAY_SIZE(glbl_dsc_imm_crd_ctr2_a_field_info), + glbl_dsc_imm_crd_ctr2_a_field_info }, -{"CFG_PL_CRED_CTL", 0x68, +{"GLBL_DSC_IMM_CRD_CTR3_A", 0x344, 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 + ARRAY_SIZE(glbl_dsc_imm_crd_ctr3_a_field_info), + glbl_dsc_imm_crd_ctr3_a_field_info }, -{"CFG_BLK_SCRATCH", 0x80, +{"GLBL_DSC_H2C_OUT_CTR0_A", 0x348, 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 + ARRAY_SIZE(glbl_dsc_h2c_out_ctr0_a_field_info), + glbl_dsc_h2c_out_ctr0_a_field_info }, -{"CFG_GIC", 0xa0, +{"GLBL_DSC_H2C_OUT_CTR1_A", 0x34c, 1, 0, 0, 0, 0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY, - ARRAY_SIZE(cfg_gic_field_info), - cfg_gic_field_info + ARRAY_SIZE(glbl_dsc_h2c_out_ctr1_a_field_info), + glbl_dsc_h2c_out_ctr1_a_field_info }, -{"RAM_SBE_MSK_1_A", 0xe0, +{"GLBL_DSC_H2C_OUT_CTR2_A", 0x350, 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 + ARRAY_SIZE(glbl_dsc_h2c_out_ctr2_a_field_info), + glbl_dsc_h2c_out_ctr2_a_field_info }, -{"RAM_SBE_STS_1_A", 0xe4, +{"GLBL_DSC_H2C_OUT_CTR3_A", 0x354, 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 + ARRAY_SIZE(glbl_dsc_h2c_out_ctr3_a_field_info), + glbl_dsc_h2c_out_ctr3_a_field_info }, -{"RAM_DBE_MSK_1_A", 0xe8, +{"GLBL_DSC_C2H_OUT_CTR0_A", 0x358, 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 + ARRAY_SIZE(glbl_dsc_c2h_out_ctr0_a_field_info), + glbl_dsc_c2h_out_ctr0_a_field_info }, -{"RAM_DBE_STS_1_A", 0xec, +{"GLBL_DSC_C2H_OUT_CTR1_A", 0x35c, 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 + ARRAY_SIZE(glbl_dsc_c2h_out_ctr1_a_field_info), + glbl_dsc_c2h_out_ctr1_a_field_info }, -{"RAM_SBE_MSK_A", 0xf0, +{"GLBL_DSC_C2H_OUT_CTR2_A", 0x360, 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 + ARRAY_SIZE(glbl_dsc_c2h_out_ctr2_a_field_info), + glbl_dsc_c2h_out_ctr2_a_field_info }, -{"RAM_SBE_STS_A", 0xf4, +{"GLBL_DSC_C2H_OUT_CTR3_A", 0x364, 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 + ARRAY_SIZE(glbl_dsc_c2h_out_ctr3_a_field_info), + glbl_dsc_c2h_out_ctr3_a_field_info }, -{"RAM_DBE_MSK_A", 0xf8, +{"T", 0x368, 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 + ARRAY_SIZE(t_field_info), + t_field_info }, -{"RAM_DBE_STS_A", 0xfc, +{"GLBL_PERF_CNTR_CTL_A1", 0x36c, 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 + ARRAY_SIZE(glbl_perf_cntr_ctl_a1_field_info), + glbl_perf_cntr_ctl_a1_field_info }, -{"GLBL2_IDENTIFIER", 0x100, +{"GLBL_FREE_CNT_A0", 0x370, 1, 0, 0, 0, 0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY, - ARRAY_SIZE(glbl2_identifier_field_info), - glbl2_identifier_field_info + ARRAY_SIZE(glbl_free_cnt_a0_field_info), + glbl_free_cnt_a0_field_info }, -{"GLBL2_CHANNEL_INST", 0x114, +{"GLBL_FREE_CNT_A1", 0x374, 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 + ARRAY_SIZE(glbl_free_cnt_a1_field_info), + glbl_free_cnt_a1_field_info }, -{"GLBL2_CHANNEL_MDMA", 0x118, +{"GLBL_AXIS_H2C_CNT_A0", 0x378, 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 + ARRAY_SIZE(glbl_axis_h2c_cnt_a0_field_info), + glbl_axis_h2c_cnt_a0_field_info }, -{"GLBL2_CHANNEL_STRM", 0x11c, +{"GLBL_AXIS_H2C_CNT_A1", 0x37c, 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 + ARRAY_SIZE(glbl_axis_h2c_cnt_a1_field_info), + glbl_axis_h2c_cnt_a1_field_info }, -{"GLBL2_CHANNEL_CAP", 0x120, +{"GLBL_AXIS_H2C_CNT_A2", 0x380, 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 + ARRAY_SIZE(glbl_axis_h2c_cnt_a2_field_info), + glbl_axis_h2c_cnt_a2_field_info }, -{"GLBL2_CHANNEL_PASID_CAP", 0x128, +{"GLBL_AXIS_H2C_CNT_A3", 0x384, 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 + ARRAY_SIZE(glbl_axis_h2c_cnt_a3_field_info), + glbl_axis_h2c_cnt_a3_field_info }, -{"GLBL2_SYSTEM_ID", 0x130, +{"GLBL_AXIS_H2C_CNT_A4", 0x388, 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 + ARRAY_SIZE(glbl_axis_h2c_cnt_a4_field_info), + glbl_axis_h2c_cnt_a4_field_info }, -{"GLBL2_MISC_CAP", 0x134, +{"GLBL_AXIS_H2C_CNT_A5", 0x38c, 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 + ARRAY_SIZE(glbl_axis_h2c_cnt_a5_field_info), + glbl_axis_h2c_cnt_a5_field_info }, -{"GLBL2_DBG_PCIE_RQ0", 0x1b8, +{"GLBL_AXIS_C2H_CNT_A0", 0x390, 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 + ARRAY_SIZE(glbl_axis_c2h_cnt_a0_field_info), + glbl_axis_c2h_cnt_a0_field_info }, -{"GLBL2_DBG_PCIE_RQ1", 0x1bc, +{"GLBL_AXIS_C2H_CNT_A1", 0x394, 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 + ARRAY_SIZE(glbl_axis_c2h_cnt_a1_field_info), + glbl_axis_c2h_cnt_a1_field_info }, -{"GLBL2_DBG_AXIMM_WR0", 0x1c0, +{"GLBL_AXIS_C2H_CNT_A2", 0x398, 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 + ARRAY_SIZE(glbl_axis_c2h_cnt_a2_field_info), + glbl_axis_c2h_cnt_a2_field_info }, -{"GLBL2_DBG_AXIMM_WR1", 0x1c4, +{"GLBL_AXIS_C2H_CNT_A3", 0x39c, 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 + ARRAY_SIZE(glbl_axis_c2h_cnt_a3_field_info), + glbl_axis_c2h_cnt_a3_field_info }, -{"GLBL2_DBG_AXIMM_RD0", 0x1c8, +{"GLBL_AXIS_C2H_CNT_A4", 0x3a0, 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 + ARRAY_SIZE(glbl_axis_c2h_cnt_a4_field_info), + glbl_axis_c2h_cnt_a4_field_info }, -{"GLBL2_DBG_AXIMM_RD1", 0x1cc, +{"GLBL_AXIS_C2H_CNT_A5", 0x3a4, 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 + ARRAY_SIZE(glbl_axis_c2h_cnt_a5_field_info), + glbl_axis_c2h_cnt_a5_field_info }, -{"GLBL2_DBG_FAB0", 0x1d0, +{"GLBL_M_AXI_WR_CNT_A0", 0x3a8, 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 + ARRAY_SIZE(glbl_m_axi_wr_cnt_a0_field_info), + glbl_m_axi_wr_cnt_a0_field_info }, -{"GLBL2_DBG_FAB1", 0x1d4, +{"GLBL_M_AXI_WR_CNT_A1", 0x3ac, 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 + ARRAY_SIZE(glbl_m_axi_wr_cnt_a1_field_info), + glbl_m_axi_wr_cnt_a1_field_info }, -{"GLBL2_DBG_MATCH_SEL", 0x1f4, +{"GLBL_M_AXI_WR_CNT_A2", 0x3b0, 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 + ARRAY_SIZE(glbl_m_axi_wr_cnt_a2_field_info), + glbl_m_axi_wr_cnt_a2_field_info }, -{"GLBL2_DBG_MATCH_MSK", 0x1f8, +{"GLBL_M_AXI_WR_CNT_A3", 0x3b4, 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 + ARRAY_SIZE(glbl_m_axi_wr_cnt_a3_field_info), + glbl_m_axi_wr_cnt_a3_field_info }, -{"GLBL2_DBG_MATCH_PAT", 0x1fc, +{"GLBL_M_AXI_WR_CNT_A4", 0x3b8, 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 + ARRAY_SIZE(glbl_m_axi_wr_cnt_a4_field_info), + glbl_m_axi_wr_cnt_a4_field_info }, -{"GLBL_RNG_SZ_1", 0x204, +{"GLBL_M_AXI_WR_CNT_A5", 0x3bc, 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 + 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_RNG_SZ_2", 0x208, +{"GLBL_M_AXI_RD_CNT_A0", 0x3c0, 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 + 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_RNG_SZ_3", 0x20c, +{"GLBL_M_AXI_RD_CNT_A1", 0x3c4, 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 + 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_RNG_SZ_4", 0x210, +{"GLBL_M_AXI_RD_CNT_A2", 0x3c8, 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 + 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_RNG_SZ_5", 0x214, +{"GLBL_M_AXI_RD_CNT_A3", 0x3cc, 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 + 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_RNG_SZ_6", 0x218, +{"GLBL_M_AXI_RD_CNT_A4", 0x3d0, 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 + 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_RNG_SZ_7", 0x21c, +{"GLBL_M_AXI_RD_CNT_A5", 0x3d4, 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 + 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_RNG_SZ_8", 0x220, +{"GLBL_M_AXIB_WR_CNT_A0", 0x3d8, 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 + 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_RNG_SZ_9", 0x224, +{"GLBL_M_AXIB_WR_CNT_A1", 0x3dc, 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 + 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_RNG_SZ_A", 0x228, +{"GLBL_M_AXIB_WR_CNT_A2", 0x3e0, 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 + 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_RNG_SZ_B", 0x22c, +{"GLBL_M_AXIB_WR_CNT_A3", 0x3e4, 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 + 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_RNG_SZ_C", 0x230, +{"GLBL_M_AXIB_WR_CNT_A4", 0x3e8, 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 + 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_RNG_SZ_D", 0x234, +{"GLBL_M_AXIB_WR_CNT_A5", 0x3ec, 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 + 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_RNG_SZ_E", 0x238, +{"GLBL_M_AXIB_RD_CNT_A0", 0x3f0, 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 + 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_RNG_SZ_F", 0x23c, +{"GLBL_M_AXIB_RD_CNT_A1", 0x3f4, 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 + 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_RNG_SZ_10", 0x240, +{"GLBL_M_AXIB_RD_CNT_A2", 0x3f8, 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 + 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_ERR_STAT", 0x248, +{"GLBL_M_AXIB_RD_CNT_A3", 0x3fc, 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 + 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_ERR_MASK", 0x24c, +{"GLBL_M_AXIB_RD_CNT_A4", 0x400, 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 + 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_DSC_CFG", 0x250, +{"GLBL_M_AXIB_RD_CNT_A5", 0x404, 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 + 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_DSC_ERR_STS", 0x254, +{"GLBL_S_AXI_WR_CNT_A0", 0x408, 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 + 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_DSC_ERR_MSK", 0x258, +{"GLBL_S_AXI_WR_CNT_A1", 0x40c, 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 + 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_DSC_ERR_LOG0", 0x25c, +{"GLBL_S_AXI_WR_CNT_A2", 0x410, 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 + 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_DSC_ERR_LOG1", 0x260, +{"GLBL_S_AXI_WR_CNT_A3", 0x414, 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 + 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_TRQ_ERR_STS", 0x264, +{"GLBL_S_AXI_WR_CNT_A4", 0x418, 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 + 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_TRQ_ERR_MSK", 0x268, +{"GLBL_S_AXI_WR_CNT_A5", 0x41c, 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 + 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_TRQ_ERR_LOG", 0x26c, +{"GLBL_S_AXI_RD_CNT_A0", 0x420, 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 + 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_DSC_DBG_DAT0", 0x270, +{"GLBL_S_AXI_RD_CNT_A1", 0x424, 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 + 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_DSC_DBG_DAT1", 0x274, +{"GLBL_S_AXI_RD_CNT_A2", 0x428, 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 + 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_DSC_DBG_CTL", 0x278, +{"GLBL_S_AXI_RD_CNT_A3", 0x42c, 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 + 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_DSC_ERR_LOG2", 0x27c, +{"GLBL_S_AXI_RD_CNT_A4", 0x430, 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 + 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_GLBL_INTERRUPT_CFG", 0x2c4, +{"GLBL_S_AXI_RD_CNT_A5", 0x434, 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 + 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_VCH_HOST_PROFILE", 0x2c8, +{"GLBL_S_AXIS_CMP_CNT_A0", 0x438, 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 + 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_BRIDGE_HOST_PROFILE", 0x308, +{"GLBL_S_AXIS_CMP_CNT_A1", 0x43c, 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 + 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 }, -{"AXIMM_IRQ_DEST_ADDR", 0x30c, +{"GLBL_S_AXIS_CMP_CNT_A2", 0x440, 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 + 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 }, -{"FAB_ERR_LOG", 0x314, +{"GLBL_S_AXIS_CMP_CNT_A3", 0x444, 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 + 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_REQ_ERR_STS", 0x318, +{"GLBL_S_AXIS_CMP_CNT_A4", 0x448, 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 + ARRAY_SIZE(glbl_s_axis_cmp_cnt_a4_field_info), + glbl_s_axis_cmp_cnt_a4_field_info }, -{"GLBL_REQ_ERR_MSK", 0x31c, +{"GLBL_S_AXIS_CMP_CNT_A5", 0x44c, 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 + 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, @@ -3189,6 +4484,18 @@ static struct xreg_info eqdma_config_regs[] = { 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, @@ -3297,18 +4604,6 @@ static struct xreg_info eqdma_config_regs[] = { 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, @@ -3891,6 +5186,12 @@ static struct xreg_info eqdma_config_regs[] = { 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, @@ -3915,12 +5216,96 @@ static struct xreg_info eqdma_config_regs[] = { ARRAY_SIZE(c2h_pfch_byp_tag_field_info), c2h_pfch_byp_tag_field_info }, -{"C2H_WATER_MARK", 0x1500, +{"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 +}, }; 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 old mode 100644 new mode 100755 index 00b9b36..6b468d5 --- a/QDMA/linux-kernel/driver/libqdma/qdma_access/qdma_access_common.c +++ b/QDMA/linux-kernel/driver/libqdma/qdma_access/qdma_access_common.c @@ -1,5 +1,6 @@ /* - * Copyright(c) 2019-2022 Xilinx, Inc. All rights reserved. + * 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, @@ -104,12 +105,24 @@ static const char *qdma_get_rtl_version(enum qdma_rtl_version rtl_version) /** * qdma_get_ip_type() - Function to get the ip type in string format * - * @ip_type: IP Type + * @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(enum qdma_ip_type ip_type) +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"; @@ -118,7 +131,18 @@ static const char *qdma_get_ip_type(enum qdma_ip_type ip_type) case QDMA_SOFT_IP: return "QDMA Soft IP"; case EQDMA_SOFT_IP: - return "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); @@ -211,12 +235,18 @@ void qdma_read_csr_values(void *dev_hndl, uint32_t reg_offst, } } -void qdma_fetch_version_details(uint8_t is_vf, uint32_t version_reg_val, - struct qdma_hw_version_info *version_info) +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); @@ -287,6 +317,11 @@ void qdma_fetch_version_details(uint8_t is_vf, uint32_t version_reg_val, 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: @@ -305,7 +340,7 @@ void qdma_fetch_version_details(uint8_t is_vf, uint32_t version_reg_val, } } - version_str = qdma_get_ip_type(version_info->ip_type); + 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, @@ -1330,7 +1365,7 @@ int qdma_hw_access_init(void *dev_hndl, uint8_t is_vf, qdma_get_device_type(version_info.device_type)); qdma_log_info("IP Type: %s\n", - qdma_get_ip_type(version_info.ip_type)); + 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)); 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 old mode 100644 new mode 100755 index 5521c00..00f6bb6 --- a/QDMA/linux-kernel/driver/libqdma/qdma_access/qdma_access_common.h +++ b/QDMA/linux-kernel/driver/libqdma/qdma_access/qdma_access_common.h @@ -1,5 +1,6 @@ /* - * Copyright(c) 2019-2022 Xilinx, Inc. All rights reserved. + * 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, @@ -908,9 +909,8 @@ int qdma_get_error_code(int acc_err_code); * * Return: Nothing *****************************************************************************/ -void qdma_fetch_version_details(uint8_t is_vf, uint32_t version_reg_val, - struct qdma_hw_version_info *version_info); - +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 } 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 old mode 100644 new mode 100755 index aceb36f..c8b28c9 --- a/QDMA/linux-kernel/driver/libqdma/qdma_access/qdma_access_errors.h +++ b/QDMA/linux-kernel/driver/libqdma/qdma_access/qdma_access_errors.h @@ -1,5 +1,6 @@ /* - * Copyright(c) 2019-2022 Xilinx, Inc. All rights reserved. + * 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, 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 old mode 100644 new mode 100755 index 2fd24ae..66eaa32 --- a/QDMA/linux-kernel/driver/libqdma/qdma_access/qdma_access_export.h +++ b/QDMA/linux-kernel/driver/libqdma/qdma_access/qdma_access_export.h @@ -1,5 +1,6 @@ /* - * Copyright(c) 2019-2022 Xilinx, Inc. All rights reserved. + * 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, 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 old mode 100644 new mode 100755 index 7a7134d..c560b46 --- a/QDMA/linux-kernel/driver/libqdma/qdma_access/qdma_access_version.h +++ b/QDMA/linux-kernel/driver/libqdma/qdma_access/qdma_access_version.h @@ -1,5 +1,6 @@ /* - * Copyright(c) 2019-2022 Xilinx, Inc. All rights reserved. + * 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, @@ -20,7 +21,7 @@ #define QDMA_VERSION_MAJOR 2022 #define QDMA_VERSION_MINOR 1 -#define QDMA_VERSION_PATCH 4 +#define QDMA_VERSION_PATCH 5 #define QDMA_VERSION_STR \ __stringify(QDMA_VERSION_MAJOR) "." \ 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 old mode 100644 new mode 100755 index bf2d7af..757662f --- 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 @@ -1,5 +1,6 @@ /* - * Copyright(c) 2019-2022 Xilinx, Inc. All rights reserved. + * 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, 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 old mode 100644 new mode 100755 index 50c1d51..b238c33 --- 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 @@ -1,5 +1,6 @@ /* - * Copyright(c) 2019-2022 Xilinx, Inc. All rights reserved. + * 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, 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 old mode 100644 new mode 100755 index e480e41..dee28b4 --- 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 @@ -1,5 +1,6 @@ /* - * Copyright(c) 2019-2022 Xilinx, Inc. All rights reserved. + * 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, 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 old mode 100644 new mode 100755 index 16f33db..dcfb94f --- 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 @@ -1,5 +1,6 @@ /* - * Copyright(c) 2019-2022 Xilinx, Inc. All rights reserved. + * 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, diff --git a/QDMA/linux-kernel/driver/libqdma/qdma_access/qdma_list.c b/QDMA/linux-kernel/driver/libqdma/qdma_access/qdma_list.c old mode 100644 new mode 100755 index 4ccd2b0..b7fabf7 --- a/QDMA/linux-kernel/driver/libqdma/qdma_access/qdma_list.c +++ b/QDMA/linux-kernel/driver/libqdma/qdma_access/qdma_list.c @@ -1,5 +1,6 @@ /* - * Copyright(c) 2019-2022 Xilinx, Inc. All rights reserved. + * 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, diff --git a/QDMA/linux-kernel/driver/libqdma/qdma_access/qdma_list.h b/QDMA/linux-kernel/driver/libqdma/qdma_access/qdma_list.h old mode 100644 new mode 100755 index 221a1dd..dd5f7d4 --- a/QDMA/linux-kernel/driver/libqdma/qdma_access/qdma_list.h +++ b/QDMA/linux-kernel/driver/libqdma/qdma_access/qdma_list.h @@ -1,5 +1,6 @@ /* - * Copyright(c) 2019-2022 Xilinx, Inc. All rights reserved. + * 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, 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 old mode 100644 new mode 100755 index 0dbaa5f..67e7268 --- a/QDMA/linux-kernel/driver/libqdma/qdma_access/qdma_mbox_protocol.c +++ b/QDMA/linux-kernel/driver/libqdma/qdma_access/qdma_mbox_protocol.c @@ -1,5 +1,6 @@ /* - * Copyright(c) 2019-2022 Xilinx, Inc. All rights reserved. + * 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, 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 old mode 100644 new mode 100755 index a3f90fc..b29a8c0 --- a/QDMA/linux-kernel/driver/libqdma/qdma_access/qdma_mbox_protocol.h +++ b/QDMA/linux-kernel/driver/libqdma/qdma_access/qdma_mbox_protocol.h @@ -1,5 +1,6 @@ /* - * Copyright(c) 2019-2022 Xilinx, Inc. All rights reserved. + * 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, diff --git a/QDMA/linux-kernel/driver/libqdma/qdma_access/qdma_platform.h b/QDMA/linux-kernel/driver/libqdma/qdma_access/qdma_platform.h old mode 100644 new mode 100755 index df9db37..a6c7d1c --- a/QDMA/linux-kernel/driver/libqdma/qdma_access/qdma_platform.h +++ b/QDMA/linux-kernel/driver/libqdma/qdma_access/qdma_platform.h @@ -1,5 +1,6 @@ /* - * Copyright(c) 2019-2022 Xilinx, Inc. All rights reserved. + * 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, 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 old mode 100644 new mode 100755 index d66a138..f774bf6 --- a/QDMA/linux-kernel/driver/libqdma/qdma_access/qdma_reg_dump.h +++ b/QDMA/linux-kernel/driver/libqdma/qdma_access/qdma_reg_dump.h @@ -1,5 +1,6 @@ /* - * Copyright(c) 2019-2022 Xilinx, Inc. All rights reserved. + * 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, 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 old mode 100644 new mode 100755 index 8777976..1875ac4 --- a/QDMA/linux-kernel/driver/libqdma/qdma_access/qdma_resource_mgmt.c +++ b/QDMA/linux-kernel/driver/libqdma/qdma_access/qdma_resource_mgmt.c @@ -1,5 +1,6 @@ /* - * Copyright(c) 2019-2022 Xilinx, Inc. All rights reserved. + * 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, 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 old mode 100644 new mode 100755 index b0cc090..5c53c47 --- a/QDMA/linux-kernel/driver/libqdma/qdma_access/qdma_resource_mgmt.h +++ b/QDMA/linux-kernel/driver/libqdma/qdma_access/qdma_resource_mgmt.h @@ -1,5 +1,6 @@ /* - * Copyright(c) 2019-2022 Xilinx, Inc. All rights reserved. + * 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, diff --git a/QDMA/linux-kernel/driver/libqdma/qdma_access/qdma_s80_hard_access/qdma_s80_hard_access.c b/QDMA/linux-kernel/driver/libqdma/qdma_access/qdma_s80_hard_access/qdma_s80_hard_access.c deleted file mode 100644 index 6640741..0000000 --- a/QDMA/linux-kernel/driver/libqdma/qdma_access/qdma_s80_hard_access/qdma_s80_hard_access.c +++ /dev/null @@ -1,5894 +0,0 @@ -/* - * Copyright(c) 2019-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 "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 *)®s; - - 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, - ®_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, ®_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/linux-kernel/driver/libqdma/qdma_access/qdma_s80_hard_access/qdma_s80_hard_access.h b/QDMA/linux-kernel/driver/libqdma/qdma_access/qdma_s80_hard_access/qdma_s80_hard_access.h deleted file mode 100644 index f0a93ae..0000000 --- a/QDMA/linux-kernel/driver/libqdma/qdma_access/qdma_s80_hard_access/qdma_s80_hard_access.h +++ /dev/null @@ -1,278 +0,0 @@ -/* - * Copyright(c) 2019-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 __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/linux-kernel/driver/libqdma/qdma_access/qdma_s80_hard_access/qdma_s80_hard_reg.h b/QDMA/linux-kernel/driver/libqdma/qdma_access/qdma_s80_hard_access/qdma_s80_hard_reg.h deleted file mode 100644 index 5bc3c22..0000000 --- a/QDMA/linux-kernel/driver/libqdma/qdma_access/qdma_s80_hard_access/qdma_s80_hard_reg.h +++ /dev/null @@ -1,2045 +0,0 @@ -/* - * Copyright(c) 2019-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 __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/linux-kernel/driver/libqdma/qdma_access/qdma_s80_hard_access/qdma_s80_hard_reg_dump.c b/QDMA/linux-kernel/driver/libqdma/qdma_access/qdma_s80_hard_access/qdma_s80_hard_reg_dump.c deleted file mode 100644 index 638d592..0000000 --- a/QDMA/linux-kernel/driver/libqdma/qdma_access/qdma_s80_hard_access/qdma_s80_hard_reg_dump.c +++ /dev/null @@ -1,8024 +0,0 @@ -/* - * Copyright(c) 2019-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". - * - * 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_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/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 old mode 100644 new mode 100755 index 00c288b..26d10b2 --- 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 @@ -1,5 +1,6 @@ /* - * Copyright(c) 2019-2022 Xilinx, Inc. All rights reserved. + * 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, @@ -2462,7 +2463,7 @@ int qdma_get_version(void *dev_hndl, uint8_t is_vf, reg_val = qdma_reg_read(dev_hndl, reg_addr); - qdma_fetch_version_details(is_vf, reg_val, version_info); + qdma_fetch_version_details(dev_hndl, is_vf, reg_val, version_info); return QDMA_SUCCESS; } 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 old mode 100644 new mode 100755 index 0dc74e2..9cb5247 --- 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 @@ -1,5 +1,6 @@ /* - * Copyright(c) 2019-2022 Xilinx, Inc. All rights reserved. + * 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, 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 old mode 100644 new mode 100755 index dae0e87..d3876c0 --- 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 @@ -1,5 +1,6 @@ /* - * Copyright(c) 2019-2022 Xilinx, Inc. All rights reserved. + * 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, diff --git a/QDMA/linux-kernel/driver/libqdma/qdma_compat.h b/QDMA/linux-kernel/driver/libqdma/qdma_compat.h old mode 100644 new mode 100755 index a25ccc1..ded71b5 --- a/QDMA/linux-kernel/driver/libqdma/qdma_compat.h +++ b/QDMA/linux-kernel/driver/libqdma/qdma_compat.h @@ -1,8 +1,8 @@ /* * This file is part of the Xilinx DMA IP Core driver for Linux * - * Copyright (c) 2017-2022, Xilinx, Inc. - * All rights reserved. + * 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, diff --git a/QDMA/linux-kernel/driver/libqdma/qdma_context.c b/QDMA/linux-kernel/driver/libqdma/qdma_context.c old mode 100644 new mode 100755 index 5c16fe0..246280b --- a/QDMA/linux-kernel/driver/libqdma/qdma_context.c +++ b/QDMA/linux-kernel/driver/libqdma/qdma_context.c @@ -1,8 +1,8 @@ /* * This file is part of the Xilinx DMA IP Core driver for Linux * - * Copyright (c) 2017-2022, Xilinx, Inc. - * All rights reserved. + * 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, @@ -90,9 +90,11 @@ static int make_sw_context(struct qdma_descq *descq, (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; diff --git a/QDMA/linux-kernel/driver/libqdma/qdma_context.h b/QDMA/linux-kernel/driver/libqdma/qdma_context.h old mode 100644 new mode 100755 index ad8cf33..9d21d48 --- a/QDMA/linux-kernel/driver/libqdma/qdma_context.h +++ b/QDMA/linux-kernel/driver/libqdma/qdma_context.h @@ -1,8 +1,8 @@ /* * This file is part of the Xilinx DMA IP Core driver for Linux * - * Copyright (c) 2017-2022, Xilinx, Inc. - * All rights reserved. + * 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, @@ -27,6 +27,14 @@ #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 diff --git a/QDMA/linux-kernel/driver/libqdma/qdma_debugfs.c b/QDMA/linux-kernel/driver/libqdma/qdma_debugfs.c old mode 100644 new mode 100755 index b82d36c..0c61bad --- a/QDMA/linux-kernel/driver/libqdma/qdma_debugfs.c +++ b/QDMA/linux-kernel/driver/libqdma/qdma_debugfs.c @@ -1,8 +1,8 @@ /* * This file is part of the Xilinx DMA IP Core driver for Linux * - * Copyright (c) 2017-2022, Xilinx, Inc. - * All rights reserved. + * 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, diff --git a/QDMA/linux-kernel/driver/libqdma/qdma_debugfs.h b/QDMA/linux-kernel/driver/libqdma/qdma_debugfs.h old mode 100644 new mode 100755 index 5eb16aa..2b3600a --- a/QDMA/linux-kernel/driver/libqdma/qdma_debugfs.h +++ b/QDMA/linux-kernel/driver/libqdma/qdma_debugfs.h @@ -1,8 +1,8 @@ /* * This file is part of the Xilinx DMA IP Core driver for Linux * - * Copyright (c) 2017-2022, Xilinx, Inc. - * All rights reserved. + * 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, diff --git a/QDMA/linux-kernel/driver/libqdma/qdma_debugfs_dev.c b/QDMA/linux-kernel/driver/libqdma/qdma_debugfs_dev.c old mode 100644 new mode 100755 index 68c69a4..3daa36a --- a/QDMA/linux-kernel/driver/libqdma/qdma_debugfs_dev.c +++ b/QDMA/linux-kernel/driver/libqdma/qdma_debugfs_dev.c @@ -1,8 +1,8 @@ /* * This file is part of the Xilinx DMA IP Core driver for Linux * - * Copyright (c) 2017-2022, Xilinx, Inc. - * All rights reserved. + * 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, diff --git a/QDMA/linux-kernel/driver/libqdma/qdma_debugfs_dev.h b/QDMA/linux-kernel/driver/libqdma/qdma_debugfs_dev.h old mode 100644 new mode 100755 index 93fd985..5a74c79 --- a/QDMA/linux-kernel/driver/libqdma/qdma_debugfs_dev.h +++ b/QDMA/linux-kernel/driver/libqdma/qdma_debugfs_dev.h @@ -1,8 +1,8 @@ /* * This file is part of the Xilinx DMA IP Core driver for Linux * - * Copyright (c) 2017-2022, Xilinx, Inc. - * All rights reserved. + * 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, diff --git a/QDMA/linux-kernel/driver/libqdma/qdma_debugfs_queue.c b/QDMA/linux-kernel/driver/libqdma/qdma_debugfs_queue.c old mode 100644 new mode 100755 index 4ac7682..c323c47 --- a/QDMA/linux-kernel/driver/libqdma/qdma_debugfs_queue.c +++ b/QDMA/linux-kernel/driver/libqdma/qdma_debugfs_queue.c @@ -1,8 +1,8 @@ /* * This file is part of the Xilinx DMA IP Core driver for Linux * - * Copyright (c) 2017-2022, Xilinx, Inc. - * All rights reserved. + * 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, diff --git a/QDMA/linux-kernel/driver/libqdma/qdma_debugfs_queue.h b/QDMA/linux-kernel/driver/libqdma/qdma_debugfs_queue.h old mode 100644 new mode 100755 index 28c9d6e..37d62e7 --- a/QDMA/linux-kernel/driver/libqdma/qdma_debugfs_queue.h +++ b/QDMA/linux-kernel/driver/libqdma/qdma_debugfs_queue.h @@ -1,8 +1,8 @@ /* * This file is part of the Xilinx DMA IP Core driver for Linux * - * Copyright (c) 2017-2022, Xilinx, Inc. - * All rights reserved. + * 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, diff --git a/QDMA/linux-kernel/driver/libqdma/qdma_descq.c b/QDMA/linux-kernel/driver/libqdma/qdma_descq.c old mode 100644 new mode 100755 index 18c52aa..f62a927 --- a/QDMA/linux-kernel/driver/libqdma/qdma_descq.c +++ b/QDMA/linux-kernel/driver/libqdma/qdma_descq.c @@ -1,8 +1,8 @@ /* * This file is part of the Xilinx DMA IP Core driver for Linux * - * Copyright (c) 2017-2022, Xilinx, Inc. - * All rights reserved. + * 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, diff --git a/QDMA/linux-kernel/driver/libqdma/qdma_descq.h b/QDMA/linux-kernel/driver/libqdma/qdma_descq.h old mode 100644 new mode 100755 index f8e90e5..bb1ba36 --- a/QDMA/linux-kernel/driver/libqdma/qdma_descq.h +++ b/QDMA/linux-kernel/driver/libqdma/qdma_descq.h @@ -1,8 +1,8 @@ /* * This file is part of the Xilinx DMA IP Core driver for Linux * - * Copyright (c) 2017-2022, Xilinx, Inc. - * All rights reserved. + * 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, diff --git a/QDMA/linux-kernel/driver/libqdma/qdma_device.c b/QDMA/linux-kernel/driver/libqdma/qdma_device.c old mode 100644 new mode 100755 index e0e6b2a..a0ea5fc --- a/QDMA/linux-kernel/driver/libqdma/qdma_device.c +++ b/QDMA/linux-kernel/driver/libqdma/qdma_device.c @@ -1,8 +1,8 @@ /* * This file is part of the Xilinx DMA IP Core driver for Linux * - * Copyright (c) 2017-2022, Xilinx, Inc. - * All rights reserved. + * 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, @@ -232,8 +232,8 @@ int qdma_device_init(struct xlnx_dma_dev *xdev) memset(&fmap, 0, sizeof(struct qdma_fmap_cfg)); - qdev = kzalloc(sizeof(struct qdma_dev) + - sizeof(struct qdma_descq) * qmax * 3, GFP_KERNEL); + 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); @@ -254,9 +254,10 @@ int qdma_device_init(struct xlnx_dma_dev *xdev) #endif descq = (struct qdma_descq *)(qdev + 1); - qdev->h2c_descq = descq; - qdev->c2h_descq = descq + qmax; - qdev->cmpt_descq = descq + (2 * qmax); + 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; @@ -316,6 +317,10 @@ void qdma_device_cleanup(struct xlnx_dma_dev *xdev) 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); } diff --git a/QDMA/linux-kernel/driver/libqdma/qdma_device.h b/QDMA/linux-kernel/driver/libqdma/qdma_device.h old mode 100644 new mode 100755 index e88193e..c860467 --- a/QDMA/linux-kernel/driver/libqdma/qdma_device.h +++ b/QDMA/linux-kernel/driver/libqdma/qdma_device.h @@ -1,8 +1,8 @@ /* * This file is part of the Xilinx DMA IP Core driver for Linux * - * Copyright (c) 2017-2022, Xilinx, Inc. - * All rights reserved. + * 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, diff --git a/QDMA/linux-kernel/driver/libqdma/qdma_intr.c b/QDMA/linux-kernel/driver/libqdma/qdma_intr.c old mode 100644 new mode 100755 index 8de030d..14e88ca --- a/QDMA/linux-kernel/driver/libqdma/qdma_intr.c +++ b/QDMA/linux-kernel/driver/libqdma/qdma_intr.c @@ -1,8 +1,8 @@ /* * This file is part of the Xilinx DMA IP Core driver for Linux * - * Copyright (c) 2017-2022, Xilinx, Inc. - * All rights reserved. + * 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, @@ -260,10 +260,10 @@ static void data_intr_aggregate(struct xlnx_dma_dev *xdev, int vidx, int irq, queue_intr_cidx_update(descq->xdev, descq->conf.qidx, &coal_entry->intr_cidx_info); } else if (num_entries_processed == 0) { - pr_warn("No entries processed\n"); + pr_debug("No entries processed\n"); descq = xdev->prev_descq; if (descq) { - pr_warn("Doing stale update\n"); + pr_debug("Doing stale update\n"); queue_intr_cidx_update(descq->xdev, descq->conf.qidx, &coal_entry->intr_cidx_info); } diff --git a/QDMA/linux-kernel/driver/libqdma/qdma_intr.h b/QDMA/linux-kernel/driver/libqdma/qdma_intr.h old mode 100644 new mode 100755 index 7d428ec..c26174e --- a/QDMA/linux-kernel/driver/libqdma/qdma_intr.h +++ b/QDMA/linux-kernel/driver/libqdma/qdma_intr.h @@ -1,8 +1,8 @@ /* * This file is part of the Xilinx DMA IP Core driver for Linux * - * Copyright (c) 2017-2022, Xilinx, Inc. - * All rights reserved. + * 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, diff --git a/QDMA/linux-kernel/driver/libqdma/qdma_license.h b/QDMA/linux-kernel/driver/libqdma/qdma_license.h old mode 100644 new mode 100755 index b2173d5..3175073 --- a/QDMA/linux-kernel/driver/libqdma/qdma_license.h +++ b/QDMA/linux-kernel/driver/libqdma/qdma_license.h @@ -3,8 +3,8 @@ /* * This file is part of the Xilinx DMA IP Core driver for Linux * - * Copyright (c) 2017-2022, Xilinx, Inc. - * All rights reserved. + * 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, diff --git a/QDMA/linux-kernel/driver/libqdma/qdma_mbox.c b/QDMA/linux-kernel/driver/libqdma/qdma_mbox.c old mode 100644 new mode 100755 index 57f8c8e..0161d04 --- a/QDMA/linux-kernel/driver/libqdma/qdma_mbox.c +++ b/QDMA/linux-kernel/driver/libqdma/qdma_mbox.c @@ -1,8 +1,8 @@ /* * This file is part of the Xilinx DMA IP Core driver for Linux * - * Copyright (c) 2017-2022, Xilinx, Inc. - * All rights reserved. + * 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, diff --git a/QDMA/linux-kernel/driver/libqdma/qdma_mbox.h b/QDMA/linux-kernel/driver/libqdma/qdma_mbox.h old mode 100644 new mode 100755 index 269cd87..e027eda --- a/QDMA/linux-kernel/driver/libqdma/qdma_mbox.h +++ b/QDMA/linux-kernel/driver/libqdma/qdma_mbox.h @@ -1,8 +1,8 @@ /* * This file is part of the Xilinx DMA IP Core driver for Linux * - * Copyright (c) 2017-2022, Xilinx, Inc. - * All rights reserved. + * 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, diff --git a/QDMA/linux-kernel/driver/libqdma/qdma_platform.c b/QDMA/linux-kernel/driver/libqdma/qdma_platform.c old mode 100644 new mode 100755 index ed7c54a..2f1470f --- a/QDMA/linux-kernel/driver/libqdma/qdma_platform.c +++ b/QDMA/linux-kernel/driver/libqdma/qdma_platform.c @@ -1,8 +1,8 @@ /* * This file is part of the Xilinx DMA IP Core driver for Linux * - * Copyright (c) 2017-2022, Xilinx, Inc. - * All rights reserved. + * 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, diff --git a/QDMA/linux-kernel/driver/libqdma/qdma_platform_env.h b/QDMA/linux-kernel/driver/libqdma/qdma_platform_env.h old mode 100644 new mode 100755 index 45f3295..6649bfc --- a/QDMA/linux-kernel/driver/libqdma/qdma_platform_env.h +++ b/QDMA/linux-kernel/driver/libqdma/qdma_platform_env.h @@ -1,8 +1,8 @@ /* * This file is part of the Xilinx DMA IP Core driver for Linux * - * Copyright (c) 2017-2022, Xilinx, Inc. - * All rights reserved. + * 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, diff --git a/QDMA/linux-kernel/driver/libqdma/qdma_regs.c b/QDMA/linux-kernel/driver/libqdma/qdma_regs.c old mode 100644 new mode 100755 index 743f8e1..ba45e1c --- a/QDMA/linux-kernel/driver/libqdma/qdma_regs.c +++ b/QDMA/linux-kernel/driver/libqdma/qdma_regs.c @@ -1,8 +1,8 @@ /* * This file is part of the Xilinx DMA IP Core driver for Linux * - * Copyright (c) 2017-2022, Xilinx, Inc. - * All rights reserved. + * 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, diff --git a/QDMA/linux-kernel/driver/libqdma/qdma_regs.h b/QDMA/linux-kernel/driver/libqdma/qdma_regs.h old mode 100644 new mode 100755 index 6bc43a2..4e1d1bb --- a/QDMA/linux-kernel/driver/libqdma/qdma_regs.h +++ b/QDMA/linux-kernel/driver/libqdma/qdma_regs.h @@ -1,8 +1,8 @@ /* * This file is part of the Xilinx DMA IP Core driver for Linux * - * Copyright (c) 2017-2022, Xilinx, Inc. - * All rights reserved. + * 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, diff --git a/QDMA/linux-kernel/driver/libqdma/qdma_sriov.c b/QDMA/linux-kernel/driver/libqdma/qdma_sriov.c old mode 100644 new mode 100755 index d5fda8d..4911bf8 --- a/QDMA/linux-kernel/driver/libqdma/qdma_sriov.c +++ b/QDMA/linux-kernel/driver/libqdma/qdma_sriov.c @@ -1,8 +1,8 @@ /* * This file is part of the Xilinx DMA IP Core driver for Linux * - * Copyright (c) 2017-2022, Xilinx, Inc. - * All rights reserved. + * 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, diff --git a/QDMA/linux-kernel/driver/libqdma/qdma_st_c2h.c b/QDMA/linux-kernel/driver/libqdma/qdma_st_c2h.c old mode 100644 new mode 100755 index e1da45b..fe3355e --- a/QDMA/linux-kernel/driver/libqdma/qdma_st_c2h.c +++ b/QDMA/linux-kernel/driver/libqdma/qdma_st_c2h.c @@ -1,8 +1,8 @@ /* * This file is part of the Xilinx DMA IP Core driver for Linux * - * Copyright (c) 2017-2022, Xilinx, Inc. - * All rights reserved. + * 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, diff --git a/QDMA/linux-kernel/driver/libqdma/qdma_st_c2h.h b/QDMA/linux-kernel/driver/libqdma/qdma_st_c2h.h old mode 100644 new mode 100755 index 2233b3a..1d6971f --- a/QDMA/linux-kernel/driver/libqdma/qdma_st_c2h.h +++ b/QDMA/linux-kernel/driver/libqdma/qdma_st_c2h.h @@ -1,8 +1,8 @@ /* * This file is part of the Xilinx DMA IP Core driver for Linux * - * Copyright (c) 2017-2022, Xilinx, Inc. - * All rights reserved. + * 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, diff --git a/QDMA/linux-kernel/driver/libqdma/qdma_thread.c b/QDMA/linux-kernel/driver/libqdma/qdma_thread.c old mode 100644 new mode 100755 index 930b3e0..cf96fd2 --- a/QDMA/linux-kernel/driver/libqdma/qdma_thread.c +++ b/QDMA/linux-kernel/driver/libqdma/qdma_thread.c @@ -1,8 +1,8 @@ /* * This file is part of the Xilinx DMA IP Core driver for Linux * - * Copyright (c) 2017-2022, Xilinx, Inc. - * All rights reserved. + * 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, diff --git a/QDMA/linux-kernel/driver/libqdma/qdma_thread.h b/QDMA/linux-kernel/driver/libqdma/qdma_thread.h old mode 100644 new mode 100755 index a2161ca..48b2680 --- a/QDMA/linux-kernel/driver/libqdma/qdma_thread.h +++ b/QDMA/linux-kernel/driver/libqdma/qdma_thread.h @@ -1,8 +1,8 @@ /* * This file is part of the Xilinx DMA IP Core driver for Linux * - * Copyright (c) 2017-2022, Xilinx, Inc. - * All rights reserved. + * 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, diff --git a/QDMA/linux-kernel/driver/libqdma/qdma_ul_ext.h b/QDMA/linux-kernel/driver/libqdma/qdma_ul_ext.h old mode 100644 new mode 100755 index fa84a0f..ae69938 --- a/QDMA/linux-kernel/driver/libqdma/qdma_ul_ext.h +++ b/QDMA/linux-kernel/driver/libqdma/qdma_ul_ext.h @@ -3,8 +3,8 @@ /* * This file is part of the Xilinx DMA IP Core driver for Linux * - * Copyright (c) 2017-2022, Xilinx, Inc. - * All rights reserved. + * 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, diff --git a/QDMA/linux-kernel/driver/libqdma/thread.c b/QDMA/linux-kernel/driver/libqdma/thread.c old mode 100644 new mode 100755 index 6598f4c..d0c0909 --- a/QDMA/linux-kernel/driver/libqdma/thread.c +++ b/QDMA/linux-kernel/driver/libqdma/thread.c @@ -1,8 +1,8 @@ /* * This file is part of the Xilinx DMA IP Core driver for Linux * - * Copyright (c) 2017-2022, Xilinx, Inc. - * All rights reserved. + * 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, diff --git a/QDMA/linux-kernel/driver/libqdma/thread.h b/QDMA/linux-kernel/driver/libqdma/thread.h old mode 100644 new mode 100755 index ccbfc33..56346ce --- a/QDMA/linux-kernel/driver/libqdma/thread.h +++ b/QDMA/linux-kernel/driver/libqdma/thread.h @@ -1,8 +1,8 @@ /* * This file is part of the Xilinx DMA IP Core driver for Linux * - * Copyright (c) 2017-2022, Xilinx, Inc. - * All rights reserved. + * 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, diff --git a/QDMA/linux-kernel/driver/libqdma/version.h b/QDMA/linux-kernel/driver/libqdma/version.h old mode 100644 new mode 100755 index 90bdbed..5d9a25a --- a/QDMA/linux-kernel/driver/libqdma/version.h +++ b/QDMA/linux-kernel/driver/libqdma/version.h @@ -1,8 +1,8 @@ /* * This file is part of the Xilinx DMA IP Core driver for Linux * - * Copyright (c) 2017-2022, Xilinx, Inc. - * All rights reserved. + * 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, @@ -25,7 +25,7 @@ #define LIBQDMA_VERSION_MAJOR 2022 #define LIBQDMA_VERSION_MINOR 1 -#define LIBQDMA_VERSION_PATCH 4 +#define LIBQDMA_VERSION_PATCH 5 #define LIBQDMA_VERSION_STR \ __stringify(LIBQDMA_VERSION_MAJOR) "." \ diff --git a/QDMA/linux-kernel/driver/libqdma/xdev.c b/QDMA/linux-kernel/driver/libqdma/xdev.c old mode 100644 new mode 100755 index 18cf9ee..3ef679e --- a/QDMA/linux-kernel/driver/libqdma/xdev.c +++ b/QDMA/linux-kernel/driver/libqdma/xdev.c @@ -1,8 +1,8 @@ /* * This file is part of the Xilinx DMA IP Core driver for Linux * - * Copyright (c) 2017-2022, Xilinx, Inc. - * All rights reserved. + * 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, @@ -53,6 +53,11 @@ #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 diff --git a/QDMA/linux-kernel/driver/libqdma/xdev.h b/QDMA/linux-kernel/driver/libqdma/xdev.h old mode 100644 new mode 100755 index a2ba48d..47c26b4 --- a/QDMA/linux-kernel/driver/libqdma/xdev.h +++ b/QDMA/linux-kernel/driver/libqdma/xdev.h @@ -1,8 +1,8 @@ /* * This file is part of the Xilinx DMA IP Core driver for Linux * - * Copyright (c) 2017-2022, Xilinx, Inc. - * All rights reserved. + * 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, diff --git a/QDMA/linux-kernel/driver/make_rules/common_flags.mk b/QDMA/linux-kernel/driver/make_rules/common_flags.mk old mode 100644 new mode 100755 index f824747..5929b0c --- a/QDMA/linux-kernel/driver/make_rules/common_flags.mk +++ b/QDMA/linux-kernel/driver/make_rules/common_flags.mk @@ -1,8 +1,8 @@ #/* # * This file is part of the Xilinx DMA IP Core driver for Linux # * -# * Copyright (c) 2017-2022, Xilinx, Inc. -# * All rights reserved. +# * 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, diff --git a/QDMA/linux-kernel/driver/make_rules/distro_check.mk b/QDMA/linux-kernel/driver/make_rules/distro_check.mk old mode 100644 new mode 100755 index 726c1a5..104c288 --- a/QDMA/linux-kernel/driver/make_rules/distro_check.mk +++ b/QDMA/linux-kernel/driver/make_rules/distro_check.mk @@ -1,8 +1,8 @@ #/* # * This file is part of the Xilinx DMA IP Core driver for Linux # * -# * Copyright (c) 2017-2022, Xilinx, Inc. -# * All rights reserved. +# * 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, diff --git a/QDMA/linux-kernel/driver/make_rules/kernel_check.mk b/QDMA/linux-kernel/driver/make_rules/kernel_check.mk old mode 100644 new mode 100755 index 54afd23..c9a1f0b --- a/QDMA/linux-kernel/driver/make_rules/kernel_check.mk +++ b/QDMA/linux-kernel/driver/make_rules/kernel_check.mk @@ -1,8 +1,8 @@ #/* # * This file is part of the Xilinx DMA IP Core driver for Linux # * -# * Copyright (c) 2017-2022, Xilinx, Inc. -# * All rights reserved. +# * 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, diff --git a/QDMA/linux-kernel/driver/src/Makefile b/QDMA/linux-kernel/driver/src/Makefile old mode 100644 new mode 100755 index 1d77564..fcbe577 --- a/QDMA/linux-kernel/driver/src/Makefile +++ b/QDMA/linux-kernel/driver/src/Makefile @@ -1,8 +1,8 @@ #/* # * This file is part of the Xilinx DMA IP Core driver for Linux # * -# * Copyright (c) 2017-2022, Xilinx, Inc. -# * All rights reserved. +# * 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, diff --git a/QDMA/linux-kernel/driver/src/cdev.c b/QDMA/linux-kernel/driver/src/cdev.c old mode 100644 new mode 100755 index 8318897..2a7de5b --- a/QDMA/linux-kernel/driver/src/cdev.c +++ b/QDMA/linux-kernel/driver/src/cdev.c @@ -1,8 +1,8 @@ /* * This file is part of the Xilinx DMA IP Core driver for Linux * - * Copyright (c) 2017-2022, Xilinx, Inc. - * All rights reserved. + * 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, diff --git a/QDMA/linux-kernel/driver/src/cdev.h b/QDMA/linux-kernel/driver/src/cdev.h old mode 100644 new mode 100755 index ef046b0..616aec8 --- a/QDMA/linux-kernel/driver/src/cdev.h +++ b/QDMA/linux-kernel/driver/src/cdev.h @@ -1,8 +1,8 @@ /* * This file is part of the Xilinx DMA IP Core driver for Linux * - * Copyright (c) 2017-2022, Xilinx, Inc. - * All rights reserved. + * 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, diff --git a/QDMA/linux-kernel/driver/src/nl.c b/QDMA/linux-kernel/driver/src/nl.c old mode 100644 new mode 100755 index 741cd75..55812f1 --- a/QDMA/linux-kernel/driver/src/nl.c +++ b/QDMA/linux-kernel/driver/src/nl.c @@ -1,8 +1,8 @@ /* * This file is part of the Xilinx DMA IP Core driver for Linux * - * Copyright (c) 2017-2022, Xilinx, Inc. - * All rights reserved. + * 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, diff --git a/QDMA/linux-kernel/driver/src/nl.h b/QDMA/linux-kernel/driver/src/nl.h old mode 100644 new mode 100755 index 3b3ff07..40d91f2 --- a/QDMA/linux-kernel/driver/src/nl.h +++ b/QDMA/linux-kernel/driver/src/nl.h @@ -1,8 +1,8 @@ /* * This file is part of the Xilinx DMA IP Core driver for Linux * - * Copyright (c) 2017-2022, Xilinx, Inc. - * All rights reserved. + * 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, diff --git a/QDMA/linux-kernel/driver/src/pci_ids.h b/QDMA/linux-kernel/driver/src/pci_ids.h old mode 100644 new mode 100755 index a059419..1411045 --- a/QDMA/linux-kernel/driver/src/pci_ids.h +++ b/QDMA/linux-kernel/driver/src/pci_ids.h @@ -1,8 +1,8 @@ /* * This file is part of the Xilinx DMA IP Core driver for Linux * - * Copyright (c) 2017-2022, Xilinx, Inc. - * All rights reserved. + * 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, @@ -244,6 +244,13 @@ static const struct pci_device_id pci_ids[] = { { 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 */ @@ -452,6 +459,13 @@ static const struct pci_device_id pci_ids[] = { { 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,} diff --git a/QDMA/linux-kernel/driver/src/qdma_mod.c b/QDMA/linux-kernel/driver/src/qdma_mod.c old mode 100644 new mode 100755 index 3b63785..ae2a923 --- a/QDMA/linux-kernel/driver/src/qdma_mod.c +++ b/QDMA/linux-kernel/driver/src/qdma_mod.c @@ -1,8 +1,8 @@ /* * This file is part of the Xilinx DMA IP Core driver for Linux * - * Copyright (c) 2017-2022, Xilinx, Inc. - * All rights reserved. + * 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, diff --git a/QDMA/linux-kernel/driver/src/qdma_mod.h b/QDMA/linux-kernel/driver/src/qdma_mod.h old mode 100644 new mode 100755 index 2a74c03..079d95a --- a/QDMA/linux-kernel/driver/src/qdma_mod.h +++ b/QDMA/linux-kernel/driver/src/qdma_mod.h @@ -1,8 +1,8 @@ /* * This file is part of the Xilinx DMA IP Core driver for Linux * - * Copyright (c) 2017-2022, Xilinx, Inc. - * All rights reserved. + * 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, diff --git a/QDMA/linux-kernel/driver/src/version.h b/QDMA/linux-kernel/driver/src/version.h old mode 100644 new mode 100755 index e32d03a..5906c95 --- a/QDMA/linux-kernel/driver/src/version.h +++ b/QDMA/linux-kernel/driver/src/version.h @@ -1,8 +1,8 @@ /* * This file is part of the Xilinx DMA IP Core driver for Linux * - * Copyright (c) 2017-2022, Xilinx, Inc. - * All rights reserved. + * 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, @@ -33,7 +33,7 @@ #define DRV_MOD_MAJOR 2022 #define DRV_MOD_MINOR 1 -#define DRV_MOD_PATCHLEVEL 4 +#define DRV_MOD_PATCHLEVEL 5 #define DRV_MODULE_VERSION \ __stringify(DRV_MOD_MAJOR) "." \ diff --git a/QDMA/linux-kernel/license.txt b/QDMA/linux-kernel/license.txt old mode 100644 new mode 100755 diff --git a/QDMA/linux-kernel/scripts/license-for-datafile_16bit_pattern.txt b/QDMA/linux-kernel/scripts/license-for-datafile_16bit_pattern.txt old mode 100644 new mode 100755 index c419203..15469ad --- a/QDMA/linux-kernel/scripts/license-for-datafile_16bit_pattern.txt +++ b/QDMA/linux-kernel/scripts/license-for-datafile_16bit_pattern.txt @@ -1,19 +1,19 @@ -/* - * 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. +/* + * 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 old mode 100644 new mode 100755 index c31100c..07d5b3a --- a/QDMA/linux-kernel/scripts/qdma_generate_conf_file.sh +++ b/QDMA/linux-kernel/scripts/qdma_generate_conf_file.sh @@ -1,8 +1,8 @@ #/* # * This file is part of the Xilinx DMA IP Core driver for Linux # * -# * Copyright (c) 2017-2022, Xilinx, Inc. -# * All rights reserved. +# * 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, @@ -118,4 +118,4 @@ generate_conf() rm -rf conf_file } -generate_conf \ No newline at end of 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 index f0d7145..de584fe 100755 --- a/QDMA/linux-kernel/scripts/qdma_run_test_mm_vf.sh +++ b/QDMA/linux-kernel/scripts/qdma_run_test_mm_vf.sh @@ -1,8 +1,8 @@ #/* # * This file is part of the Xilinx DMA IP Core driver for Linux # * -# * Copyright (c) 2017-2022, Xilinx, Inc. -# * All rights reserved. +# * 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, diff --git a/QDMA/linux-kernel/scripts/qdma_run_test_pf.sh b/QDMA/linux-kernel/scripts/qdma_run_test_pf.sh index ae106aa..d328ec9 100755 --- a/QDMA/linux-kernel/scripts/qdma_run_test_pf.sh +++ b/QDMA/linux-kernel/scripts/qdma_run_test_pf.sh @@ -1,8 +1,8 @@ #/* # * This file is part of the Xilinx DMA IP Core driver for Linux # * -# * Copyright (c) 2017-2022, Xilinx, Inc. -# * All rights reserved. +# * 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, diff --git a/QDMA/linux-kernel/scripts/qdma_run_test_st_vf.sh b/QDMA/linux-kernel/scripts/qdma_run_test_st_vf.sh index 45d2c20..a9b620d 100755 --- a/QDMA/linux-kernel/scripts/qdma_run_test_st_vf.sh +++ b/QDMA/linux-kernel/scripts/qdma_run_test_st_vf.sh @@ -1,8 +1,8 @@ #/* # * This file is part of the Xilinx DMA IP Core driver for Linux # * -# * Copyright (c) 2017-2022, Xilinx, Inc. -# * All rights reserved. +# * 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, diff --git a/QDMA/linux-kernel/scripts/qdma_vf_auto_tst.sh b/QDMA/linux-kernel/scripts/qdma_vf_auto_tst.sh old mode 100644 new mode 100755 index a0d2585..bcb84d7 --- a/QDMA/linux-kernel/scripts/qdma_vf_auto_tst.sh +++ b/QDMA/linux-kernel/scripts/qdma_vf_auto_tst.sh @@ -1,8 +1,8 @@ #/* # * This file is part of the Xilinx DMA IP Core driver for Linux # * -# * Copyright (c) 2017-2022, Xilinx, Inc. -# * All rights reserved. +# * 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, -- GitLab