wlan-ap-Telecominfraproject/feeds/qca/qca-nss-dp-qca/files/edma_dump
John Crispin 008ca9618d
Some checks failed
Build OpenWrt/uCentral images / build (cig_wf186h) (push) Has been cancelled
Build OpenWrt/uCentral images / build (cig_wf186w) (push) Has been cancelled
Build OpenWrt/uCentral images / build (cig_wf188n) (push) Has been cancelled
Build OpenWrt/uCentral images / build (cig_wf189) (push) Has been cancelled
Build OpenWrt/uCentral images / build (cig_wf196) (push) Has been cancelled
Build OpenWrt/uCentral images / build (cybertan_eww631-a1) (push) Has been cancelled
Build OpenWrt/uCentral images / build (cybertan_eww631-b1) (push) Has been cancelled
Build OpenWrt/uCentral images / build (edgecore_eap101) (push) Has been cancelled
Build OpenWrt/uCentral images / build (edgecore_eap102) (push) Has been cancelled
Build OpenWrt/uCentral images / build (edgecore_eap104) (push) Has been cancelled
Build OpenWrt/uCentral images / build (edgecore_eap105) (push) Has been cancelled
Build OpenWrt/uCentral images / build (edgecore_eap111) (push) Has been cancelled
Build OpenWrt/uCentral images / build (edgecore_eap112) (push) Has been cancelled
Build OpenWrt/uCentral images / build (edgecore_oap101) (push) Has been cancelled
Build OpenWrt/uCentral images / build (edgecore_oap101-6e) (push) Has been cancelled
Build OpenWrt/uCentral images / build (edgecore_oap101e) (push) Has been cancelled
Build OpenWrt/uCentral images / build (edgecore_oap101e-6e) (push) Has been cancelled
Build OpenWrt/uCentral images / build (hfcl_ion4x) (push) Has been cancelled
Build OpenWrt/uCentral images / build (hfcl_ion4x_2) (push) Has been cancelled
Build OpenWrt/uCentral images / build (hfcl_ion4x_3) (push) Has been cancelled
Build OpenWrt/uCentral images / build (hfcl_ion4x_w) (push) Has been cancelled
Build OpenWrt/uCentral images / build (hfcl_ion4xe) (push) Has been cancelled
Build OpenWrt/uCentral images / build (hfcl_ion4xi) (push) Has been cancelled
Build OpenWrt/uCentral images / build (hfcl_ion4xi_w) (push) Has been cancelled
Build OpenWrt/uCentral images / build (indio_um-305ax) (push) Has been cancelled
Build OpenWrt/uCentral images / build (sercomm_ap72tip) (push) Has been cancelled
Build OpenWrt/uCentral images / build (sonicfi_rap630c-311g) (push) Has been cancelled
Build OpenWrt/uCentral images / build (sonicfi_rap630w-211g) (push) Has been cancelled
Build OpenWrt/uCentral images / build (sonicfi_rap630w-311g) (push) Has been cancelled
Build OpenWrt/uCentral images / build (udaya_a6-id2) (push) Has been cancelled
Build OpenWrt/uCentral images / build (udaya_a6-od2) (push) Has been cancelled
Build OpenWrt/uCentral images / build (wallys_dr5018) (push) Has been cancelled
Build OpenWrt/uCentral images / build (wallys_dr6018) (push) Has been cancelled
Build OpenWrt/uCentral images / build (wallys_dr6018-v4) (push) Has been cancelled
Build OpenWrt/uCentral images / build (yuncore_ax820) (push) Has been cancelled
Build OpenWrt/uCentral images / build (yuncore_ax840) (push) Has been cancelled
Build OpenWrt/uCentral images / build (yuncore_fap640) (push) Has been cancelled
Build OpenWrt/uCentral images / build (yuncore_fap650) (push) Has been cancelled
Build OpenWrt/uCentral images / build (yuncore_fap655) (push) Has been cancelled
Build OpenWrt/uCentral images / trigger-testing (push) Has been cancelled
Build OpenWrt/uCentral images / create-x64_vm-ami (push) Has been cancelled
ipq95xx: import ath12.4-cs kernel and drivers
Signed-off-by: John Crispin <john@phrozen.org>
2024-10-20 09:25:13 +02:00

599 lines
18 KiB
Bash

#!/bin/sh
#
# Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved.
#
# Permission to use, copy, modify, and/or distribute this software for any
# purpose with or without fee is hereby granted, provided that the above
# copyright notice and this permission notice appear in all copies.
#
# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
#
#@edma_dump
#@example : edma_dump [miami|alder] [general|txdesc|txcmpl|rxdesc|rxfill|full] [ring_num] [cache]
load_miami() {
RXDESC_WORD=8
RXFILL_WORD=4
TXDESC_WORD=8
TXCMPL_WORD=4
RXDESC_NUM_RNG=16
RXFILL_NUM_RNG=8
TXDESC_NUM_RNG=24
TXCMPL_NUM_RNG=24
RXDESC_CACHE_BA=0x3AB5E000
RXDESC_CACHE_DEPTH=0x280
TXDESC_CACHE_BA=0x3AB68000
TXDESC_CACHE_DEPTH=0x200
RXFILL_CACHE_BA=0x3AB5C000
RXFILL_CACHE_DEPTH=0x100
TXCMPL_CACHE_BA=0x3AB5B000
TXCMPL_CACHE_DEPTH=0x440
}
load_alder() {
RXDESC_WORD=8
RXFILL_WORD=4
TXDESC_WORD=8
TXCMPL_WORD=4
RXDESC_NUM_RNG=24
RXFILL_NUM_RNG=8
TXDESC_NUM_RNG=32
TXCMPL_NUM_RNG=32
RXDESC_CACHE_BA=0x3ABE8000
RXDESC_CACHE_DEPTH=0x3C0
TXDESC_CACHE_BA=0x3ABD0000
TXDESC_CACHE_DEPTH=0x200
RXFILL_CACHE_BA=0x3ABBF000
RXFILL_CACHE_DEPTH=0x100
TXCMPL_CACHE_BA=0x3ABE0000
TXCMPL_CACHE_DEPTH=0x440
}
general_dump() {
echo "NSS_PPE_EDMA_MAS_CTRL_REG 0x3AB00000 : " `devmem 0x3AB00000`
echo "NSS_PPE_EDMA_PORT_CTRL_REG 0x3AB00004 : " `devmem 0x3AB00004`
echo "NSS_PPE_EDMA_VLAN_CTRL_REG 0x3AB00008 : " `devmem 0x3AB00008`
echo "NSS_PPE_EDMA_RXDESC2FILL_MAP_REG_0 0x3AB00014 : " `devmem 0x3AB00014`
echo "NSS_PPE_EDMA_RXDESC2FILL_MAP_REG_1 0x3AB00018 : " `devmem 0x3AB00018`
echo "NSS_PPE_EDMA_TXQ_CTRL_REG 0x3AB00020 : " `devmem 0x3AB00020`
echo "NSS_PPE_EDMA_TXQ_CTRL_REG2 0x3AB00024 : " `devmem 0x3AB00024`
echo "NSS_PPE_EDMA_TXQ_FC_REG0 0x3AB00028 : " `devmem 0x3AB00028`
echo "NSS_PPE_EDMA_TXQ_FC_REG1 0x3AB00030 : " `devmem 0x3AB00030`
echo "NSS_PPE_EDMA_TXQ_FC_REG2 0x3AB00034 : " `devmem 0x3AB00034`
echo "NSS_PPE_EDMA_TXQ_FC_REG3 0x3AB00038 : " `devmem 0x3AB00038`
echo "NSS_PPE_EDMA_RXQ_CTRL_REG 0x3AB0003C : " `devmem 0x3AB0003C`
echo "NSS_PPE_EDMA_MISC_ERR_QID_REG1 0x3AB00040 : " `devmem 0x3AB00040`
echo "NSS_PPE_EDMA_RXQ_FC_THRE_REG 0x3AB00044 : " `devmem 0x3AB00044`
echo "NSS_PPE_EDMA_DMAR_CTRL_REG 0x3AB00048 : " `devmem 0x3AB00048`
echo "NSS_PPE_EDMA_AXIR_CTRL_REG 0x3AB0004C : " `devmem 0x3AB0004C`
echo "NSS_PPE_EDMA_AXIW_CTRL_REG 0x3AB00050 : " `devmem 0x3AB00050`
echo "NSS_PPE_EDMA_MIN_MSS_REG 0x3AB00054 : " `devmem 0x3AB00054`
echo "NSS_PPE_EDMA_LOOPBACK_CTRL_REG 0x3AB00058 : " `devmem 0x3AB00058`
echo "NSS_PPE_EDMA_MISC_INT_STAT_REG 0x3AB0005C : " `devmem 0x3AB0005C`
echo "NSS_PPE_EDMA_MISC_INT_MASK_REG 0x3AB00060 : " `devmem 0x3AB00060`
echo "NSS_PPE_EDMA_DBG_CTRL_REG 0x3AB00064 : " `devmem 0x3AB00064`
echo "NSS_PPE_EDMA_DBG_DATA_REG 0x3AB00068 : " `devmem 0x3AB00068`
echo "NSS_PPE_EDMA_TX_TIMEOUT_THRES 0x3AB0006C : " `devmem 0x3AB0006C`
echo "NSS_PPE_EDMA_REQ0_FIFO_THRES 0x3AB00080 : " `devmem 0x3AB00080`
echo "NSS_PPE_EDMA_WB_OS_THRES 0x3AB00084 : " `devmem 0x3AB00084`
echo "NSS_PPE_EDMA_MISC_ERR_QID_REG2 0x3AB00088 : " `devmem 0x3AB00088`
echo "NSS_PPE_EDMA_TXDESC2CMPL_MAP_REG_0 0x3AB0008C : " `devmem 0x3AB0008C`
echo "NSS_PPE_EDMA_TXDESC2CMPL_MAP_REG_1 0x3AB00090 : " `devmem 0x3AB00090`
echo "NSS_PPE_EDMA_TXDESC2CMPL_MAP_REG_2 0x3AB00094 : " `devmem 0x3AB00094`
echo "NSS_PPE_EDMA_TXDESC2CMPL_MAP_REG_3 0x3AB00098 : " `devmem 0x3AB00098`
echo "NSS_PPE_EDMA_MDIO_SLV_PASUE_MAP_REG_0 0x3AB000A4 : " `devmem 0x3AB000A4`
echo "NSS_PPE_EDMA_MDIO_SLV_PASUE_MAP_REG_1 0x3AB000A8 : " `devmem 0x3AB000A8`
for i in $(seq 0 $(($TXDESC_NUM_RNG - 1)))
do
reg=$((0x3AB01000 + (0x1000*$i)))
echo "NSS_PPE_EDMA_TXDESC_BA_REG_$i 0x$(printf "%x" $reg): " `devmem $reg`
done
for i in $(seq 0 $(($TXDESC_NUM_RNG - 1)))
do
reg=$((0x3AB01004 + (0x1000*$i)))
echo "NSS_PPE_EDMA_TXDESC_PROD_IDX_REG_$i 0x$(printf "%x" $reg): " `devmem $reg`
done
for i in $(seq 0 $(($TXDESC_NUM_RNG - 1)))
do
reg=$((0x3AB01008 + (0x1000*$i)))
echo "NSS_PPE_EDMA_TXDESC_CONS_IDX_REG_$i 0x$(printf "%x" $reg): " `devmem $reg`
done
for i in $(seq 0 $(($TXDESC_NUM_RNG - 1)))
do
reg=$((0x3AB0100C + (0x1000*$i)))
echo "NSS_PPE_EDMA_TXDESC_RING_SIZE_REG_$i 0x$(printf "%x" $reg): " `devmem $reg`
done
for i in $(seq 0 $(($TXDESC_NUM_RNG - 1)))
do
reg=$((0x3AB01010 + (0x1000*$i)))
echo "NSS_PPE_EDMA_TXDESC_CTRL_REG_$i 0x$(printf "%x" $reg): " `devmem $reg`
done
for i in $(seq 0 $(($TXDESC_NUM_RNG - 1)))
do
reg=$((0x3AB01014 + (0x1000*$i)))
echo "NSS_PPE_EDMA_TXDESC_BA2_REG_$i 0x$(printf "%x" $reg): " `devmem $reg`
done
for i in $(seq 0 $(($RXFILL_NUM_RNG - 1)))
do
reg=$((0x3AB29000 + (0x1000*$i)))
echo "NSS_PPE_EDMA_RXFILL_BA_REG_$i 0x$(printf "%x" $reg): " `devmem $reg`
done
for i in $(seq 0 $(($RXFILL_NUM_RNG - 1)))
do
reg=$((0x3AB29004 + (0x1000*$i)))
echo "NSS_PPE_EDMA_RXFILL_PROD_IDX_REG_$i 0x$(printf "%x" $reg): " `devmem $reg`
done
for i in $(seq 0 $(($RXFILL_NUM_RNG - 1)))
do
reg=$((0x3AB29008 + (0x1000*$i)))
echo "NSS_PPE_EDMA_RXFILL_CONS_IDX_REG_$i 0x$(printf "%x" $reg): " `devmem $reg`
done
for i in $(seq 0 $(($RXFILL_NUM_RNG - 1)))
do
reg=$((0x3AB2900C + (0x1000*$i)))
echo "NSS_PPE_EDMA_RXFILL_RING_BUFFER0_SIZE_REG_$i 0x$(printf "%x" $reg): " `devmem $reg`
done
for i in $(seq 0 $(($RXFILL_NUM_RNG - 1)))
do
reg=$((0x3AB29010 + (0x1000*$i)))
echo "NSS_PPE_EDMA_RXFILL_BUFFER1_SIZE_REG_$i 0x$(printf "%x" $reg): " `devmem $reg`
done
for i in $(seq 0 $(($RXFILL_NUM_RNG - 1)))
do
reg=$((0x3AB29014 + (0x1000*$i)))
echo "NSS_PPE_EDMA_RXFILL_FC_THRE_REG_$i 0x$(printf "%x" $reg): " `devmem $reg`
done
for i in $(seq 0 $(($RXFILL_NUM_RNG - 1)))
do
reg=$((0x3AB29018 + (0x1000*$i)))
echo "NSS_PPE_EDMA_RXFILL_UGT_THRE_REG_$i 0x$(printf "%x" $reg): " `devmem $reg`
done
for i in $(seq 0 $(($RXFILL_NUM_RNG - 1)))
do
reg=$((0x3AB2901C + (0x1000*$i)))
echo "NSS_PPE_EDMA_RXFILL_RING_EN_REG_$i 0x$(printf "%x" $reg): " `devmem $reg`
done
for i in $(seq 0 $(($RXFILL_NUM_RNG - 1)))
do
reg=$((0x3AB29020 + (0x1000*$i)))
echo "NSS_PPE_EDMA_RXFILL_DISABLE_$i 0x$(printf "%x" $reg): " `devmem $reg`
done
for i in $(seq 0 $(($RXFILL_NUM_RNG - 1)))
do
reg=$((0x3AB29024 + (0x1000*$i)))
echo "NSS_PPE_EDMA_RXFILL_DISABLE_DONE_$i 0x$(printf "%x" $reg): " `devmem $reg`
done
for i in $(seq 0 $(($RXFILL_NUM_RNG - 1)))
do
reg=$((0x3AB31000 + (0x1000*$i)))
echo "NSS_PPE_EDMA_RXFILL_INT_STAT_REG_$i 0x$(printf "%x" $reg): " `devmem $reg`
done
for i in $(seq 0 $(($RXFILL_NUM_RNG - 1)))
do
reg=$((0x3AB31004 + (0x1000*$i)))
echo "NSS_PPE_EDMA_RXFILL_INT_MASK_REG_$i 0x$(printf "%x" $reg): " `devmem $reg`
done
for i in $(seq 0 $(($RXDESC_NUM_RNG - 1)))
do
reg=$((0x3AB39000 + (0x1000*$i)))
echo "NSS_PPE_EDMA_RXDESC_BA_REG_$i 0x$(printf "%x" $reg): " `devmem $reg`
done
for i in $(seq 0 $(($RXDESC_NUM_RNG - 1)))
do
reg=$((0x3AB39004 + (0x1000*$i)))
echo "NSS_PPE_EDMA_RXDESC_PROD_IDX_REG_$i 0x$(printf "%x" $reg): " `devmem $reg`
done
for i in $(seq 0 $(($RXDESC_NUM_RNG - 1)))
do
reg=$((0x3AB39008 + (0x1000*$i)))
echo "NSS_PPE_EDMA_RXDESC_CONS_IDX_REG_$i 0x$(printf "%x" $reg): " `devmem $reg`
done
for i in $(seq 0 $(($RXDESC_NUM_RNG - 1)))
do
reg=$((0x3AB3900c + (0x1000*$i)))
echo "NSS_PPE_EDMA_RXDESC_RING_SIZE_REG_$i 0x$(printf "%x" $reg): " `devmem $reg`
done
for i in $(seq 0 $(($RXDESC_NUM_RNG - 1)))
do
reg=$((0x3AB39010 + (0x1000*$i)))
echo "NSS_PPE_EDMA_RXDESC_THRE_REG_$i 0x$(printf "%x" $reg): " `devmem $reg`
done
for i in $(seq 0 $(($RXDESC_NUM_RNG - 1)))
do
reg=$((0x3AB39014 + (0x1000*$i)))
echo "NSS_PPE_EDMA_RXDESC_UGT_THRE_REG_$i 0x$(printf "%x" $reg): " `devmem $reg`
done
for i in $(seq 0 $(($RXDESC_NUM_RNG - 1)))
do
reg=$((0x3AB39018 + (0x1000*$i)))
echo "NSS_PPE_EDMA_RXDESC_CTRL_REG_$i 0x$(printf "%x" $reg): " `devmem $reg`
done
for i in $(seq 0 $(($RXDESC_NUM_RNG - 1)))
do
reg=$((0x3AB3901C + (0x1000*$i)))
echo "NSS_PPE_EDMA_RXDESC_BPC_REG_$i 0x$(printf "%x" $reg): " `devmem $reg`
done
for i in $(seq 0 $(($RXDESC_NUM_RNG - 1)))
do
reg=$((0x3AB39020 + (0x1000*$i)))
echo "NSS_PPE_EDMA_RXDESC_DISABLE_$i 0x$(printf "%x" $reg): " `devmem $reg`
done
for i in $(seq 0 $(($RXDESC_NUM_RNG - 1)))
do
reg=$((0x3AB39024 + (0x1000*$i)))
echo "NSS_PPE_EDMA_RXDESC_DISABLE_DONE_$i 0x$(printf "%x" $reg): " `devmem $reg`
done
for i in $(seq 0 $(($RXDESC_NUM_RNG - 1)))
do
reg=$((0x3AB39028 + (0x1000*$i)))
echo "NSS_PPE_EDMA_PH_BA_REG_$i 0x$(printf "%x" $reg): " `devmem $reg`
done
for i in $(seq 0 $(($RXDESC_NUM_RNG - 1)))
do
reg=$((0x3AB59000 + (0x1000*$i)))
echo "NSS_PPE_EDMA_RXDESC_INT_STAT_REG_$i 0x$(printf "%x" $reg): " `devmem $reg`
done
for i in $(seq 0 $(($RXDESC_NUM_RNG - 1)))
do
reg=$((0x3AB59004 + (0x1000*$i)))
echo "NSS_PPE_EDMA_RXDESC_INT_MASK_REG_$i 0x$(printf "%x" $reg): " `devmem $reg`
done
for i in $(seq 0 $(($RXDESC_NUM_RNG - 1)))
do
reg=$((0x3AB59008 + (0x1000*$i)))
echo "NSS_PPE_EDMA_RX_MOD_TIMER_REG_$i 0x$(printf "%x" $reg): " `devmem $reg`
done
for i in $(seq 0 $(($RXDESC_NUM_RNG - 1)))
do
reg=$((0x3AB5900C + (0x1000*$i)))
echo "NSS_PPE_EDMA_RX_INT_CTRL_REG_$i 0x$(printf "%x" $reg): " `devmem $reg`
done
for i in $(seq 0 $(($TXCMPL_NUM_RNG - 1)))
do
reg=$((0x3AB79000 + (0x1000*$i)))
echo "NSS_PPE_EDMA_TXCMPL_BA_REG_$i 0x$(printf "%x" $reg): " `devmem $reg`
done
for i in $(seq 0 $(($TXCMPL_NUM_RNG - 1)))
do
reg=$((0x3AB79004 + (0x1000*$i)))
echo "NSS_PPE_EDMA_TXCMPL_PROD_IDX_REG_$i 0x$(printf "%x" $reg): " `devmem $reg`
done
for i in $(seq 0 $(($TXCMPL_NUM_RNG - 1)))
do
reg=$((0x3AB79008 + (0x1000*$i)))
echo "NSS_PPE_EDMA_TXCMPL_CONS_IDX_REG_$i 0x$(printf "%x" $reg): " `devmem $reg`
done
for i in $(seq 0 $(($TXCMPL_NUM_RNG - 1)))
do
reg=$((0x3AB7900C + (0x1000*$i)))
echo "NSS_PPE_EDMA_TXCMPL_RING_SIZE_REG_$i 0x$(printf "%x" $reg): " `devmem $reg`
done
for i in $(seq 0 $(($TXCMPL_NUM_RNG - 1)))
do
reg=$((0x3AB79010 + (0x1000*$i)))
echo "NSS_PPE_EDMA_TXCMPL_UGT_THRE_REG_$i 0x$(printf "%x" $reg): " `devmem $reg`
done
for i in $(seq 0 $(($TXCMPL_NUM_RNG - 1)))
do
reg=$((0x3AB79014 + (0x1000*$i)))
echo "NSS_PPE_EDMA_TXCMPL_CTRL_REG_$i 0x$(printf "%x" $reg): " `devmem $reg`
done
for i in $(seq 0 $(($TXCMPL_NUM_RNG - 1)))
do
reg=$((0x3AB79018 + (0x1000*$i)))
echo "NSS_PPE_EDMA_TXCMPL_BPC_REG_$i 0x$(printf "%x" $reg): " `devmem $reg`
done
for i in $(seq 0 $(($TXCMPL_NUM_RNG - 1)))
do
reg=$((0x3AB99000 + (0x1000*$i)))
echo "NSS_PPE_EDMA_TX_INT_STAT_REG_$i 0x$(printf "%x" $reg): " `devmem $reg`
done
for i in $(seq 0 $(($TXCMPL_NUM_RNG - 1)))
do
reg=$((0x3AB99004 + (0x1000*$i)))
echo "NSS_PPE_EDMA_TX_INT_MASK_REG_$i 0x$(printf "%x" $reg): " `devmem $reg`
done
for i in $(seq 0 $(($TXCMPL_NUM_RNG - 1)))
do
reg=$((0x3AB99008 + (0x1000*$i)))
echo "NSS_PPE_EDMA_TX_MOD_TIMER_REG_$i 0x$(printf "%x" $reg): " `devmem $reg`
done
for i in $(seq 0 $(($TXCMPL_NUM_RNG - 1)))
do
reg=$((0x3AB9900C + (0x1000*$i)))
echo "NSS_PPE_EDMA_TX_INT_CTRL_REG_$i 0x$(printf "%x" $reg): " `devmem $reg`
done
}
rxdesc_dump() {
ring_n=$1
echo "RXDESC DUMP: Ring: $ring_n"
#producer index
rxdesc_prod=$((0x3AB39004 + (0x1000*$ring_n)))
echo "rxdesc_prod[$ring_n] addr: 0x$(printf "%x" $rxdesc_prod) index: " `devmem $rxdesc_prod`
#consumer index
rxdesc_cons=$((0x3AB39008 + (0x1000*$ring_n)))
echo "rxdesc_cons[$ring_n] addr: 0x$(printf "%x" $rxdesc_cons) index: " `devmem $rxdesc_cons`
#base address
rxdesc_ba=$((0x3AB39000 + (0x1000*$ring_n)))
echo "rxdesc_ba[$ring_n] addr: 0x$(printf "%x" $rxdesc_ba) index: " `devmem $rxdesc_ba`
#ring size
rxdesc_sz=$((0x3AB3900C + (0x1000*$ring_n)))
count=`devmem $rxdesc_sz`
MAX=$(($count - 1))
reg=`devmem $rxdesc_ba`
for i in $(seq 0 $MAX)
do
echo "desc: $i"
for j in $(seq 1 $RXDESC_WORD)
do
echo "addr_$j:0x$(printf "%x" $reg) val_$j:" `devmem $reg`
reg=$(($reg + 4))
done
done
if [ $2 -eq 1 ];then
echo "dumping cached descriptors"
NUM_CACHE_DESC_PER_RNG=$(($RXDESC_CACHE_DEPTH/$RXDESC_NUM_RNG))
RXDESC_SZ=$(($RXDESC_WORD*4))
RXDESC_CACHE_SZ=$(($NUM_CACHE_DESC_PER_RNG*$RXDESC_SZ))
reg=$(($RXDESC_CACHE_BA + $(($ring_n*$RXDESC_CACHE_SZ))))
for i in $(seq 0 $(($NUM_CACHE_DESC_PER_RNG - 1)))
do
echo "desc: $i"
for j in $(seq 1 $RXDESC_WORD)
do
echo "addr_$j:0x$(printf "%x" $reg) val_$j:" `devmem $reg`
reg=$(($reg + 4))
done
done
fi
}
txdesc_dump() {
ring_n=$1
echo "TXDESC DUMP: Ring: $ring_n"
#producer index
txdesc_prod=$((0x3AB01004 + (0x1000*$ring_n)))
echo "txdesc_prod[$ring_n] addr: 0x$(printf "%x" $txdesc_prod) index: " `devmem $txdesc_prod`
#consumer index
txdesc_cons=$((0x3AB01008 + (0x1000*$ring_n)))
echo "txdesc_cons[$ring_n] addr: 0x$(printf "%x" $txdesc_cons) index: " `devmem $txdesc_cons`
#base address
txdesc_ba=$((0x3AB01000 + (0x1000*$ring_n)))
echo "txdesc_ba[$ring_n] addr: 0x$(printf "%x" $txdesc_ba) index: " `devmem $txdesc_ba`
#ring size
txdesc_sz=$((0x3AB0100C + (0x1000*$ring_n)))
count=`devmem $txdesc_sz`
MAX=$(($count - 1))
reg=`devmem $txdesc_ba`
for i in $(seq 0 $MAX)
do
echo "desc: $i"
for j in $(seq 1 $TXDESC_WORD)
do
echo "addr_$j:0x$(printf "%x" $reg) val_$j:" `devmem $reg`
reg=$(($reg + 4))
done
done
if [ $2 -eq 1 ];then
echo "dumping cache descriptors"
NUM_CACHE_DESC_PER_RNG=$(($TXDESC_CACHE_DEPTH/$TXDESC_NUM_RNG))
TXDESC_SZ=$(($TXDESC_WORD*4))
TXDESC_CACHE_SZ=$(($NUM_CACHE_DESC_PER_RNG*$TXDESC_SZ))
reg=$(($TXDESC_CACHE_BA + $(($ring_n*$TXDESC_CACHE_SZ))))
for i in $(seq 0 $(($NUM_CACHE_DESC_PER_RNG - 1)))
do
echo "desc: $i"
for j in $(seq 1 $TXDESC_WORD)
do
echo "addr_$j:0x$(printf "%x" $reg) val_$j:" `devmem $reg`
reg=$(($reg + 4))
done
done
fi
}
rxfill_dump() {
ring_n=$1
echo "RXFILL DUMP: Ring: $ring_n"
#producer index
rxfill_prod=$((0x3AB29004 + (0x1000*$ring_n)))
echo "rxfill_prod[$ring_n] addr: 0x$(printf "%x" $rxfill_prod) index: " `devmem $rxfill_prod`
#consumer index
rxfill_cons=$((0x3AB29008 + (0x1000*$ring_n)))
echo "rxfill_cons[$ring_n] addr: 0x$(printf "%x" $rxfill_cons) index: " `devmem $rxfill_cons`
#base address
rxfill_ba=$((0x3AB29000 + (0x1000*$ring_n)))
echo "rxfill_ba[$ring_n] addr: 0xi$(printf "%x" $rxfill_ba)ndex: " `devmem $rxfill_ba`
#ring size
rxfill_sz=$((0x3AB2900C + (0x1000*$ring_n)))
count=`devmem $rxfill_sz`
MAX=$(($count - 1))
reg=`devmem $rxfill_ba`
for i in $(seq 0 $MAX)
do
echo "desc: $i"
for j in $(seq 1 $RXFILL_WORD)
do
echo "addr_$j:0x$(printf "%x" $reg) val_$j:" `devmem $reg`
reg=$(($reg + 4))
done
done
if [ $2 -eq 1 ];then
echo "dumping cache descriptors"
NUM_CACHE_DESC_PER_RNG=$(($RXFILL_CACHE_DEPTH/$RXFILL_NUM_RNG))
RXFILL_SZ=$(($RXFILL_WORD*4))
RXFILL_CACHE_SZ=$(($NUM_CACHE_DESC_PER_RNG*$RXFILL_SZ))
reg=$(($RXFILL_CACHE_BA + $(($ring_n*$RXFILL_CACHE_SZ))))
for i in $(seq 0 $(($NUM_CACHE_DESC_PER_RNG - 1)))
do
echo "desc: $i"
for j in $(seq 1 $RXFILL_WORD)
do
echo "addr_$j:0x $(printf "%x" $reg) val_$j:" `devmem $reg`
reg=$(($reg + 4))
done
done
fi
}
txcmpl_dump() {
ring_n=$1
echo "TXCMPL DUMP: Ring: $ring_n"
#producer index
txcmpl_prod=$((0x3AB79004 + (0x1000*$ring_n)))
echo "txcmpl_prod[$ring_n] addr: 0x$(printf "%x" $txcmpl_prod) index: " `devmem $txcmpl_prod`
#consumer index
txcmpl_cons=$((0x3AB79008 + (0x1000*$ring_n)))
echo "txcmpl_cons[$ring_n] addr: 0x$(printf "%x" $txcmpl_cons) index: " `devmem $txcmpl_cons`
#base address
txcmpl_ba=$((0x3AB79000 + (0x1000*$ring_n)))
echo "txcmpl_ba[$ring_n] addr: 0x$(printf "%x" $txcmpl_ba) index: " `devmem $txcmpl_ba`
#ring size
txcmpl_sz=$((0x3AB7900C + (0x1000*$ring_n)))
count=`devmem $txcmpl_sz`
MAX=$(($count - 1))
reg=`devmem $txcmpl_ba`
for i in $(seq 0 $MAX)
do
echo "desc: $i"
for j in $(seq 1 $TXCMPL_WORD)
do
echo "addr_$j:0x$(printf "%x" $reg) val_$j:" `devmem $reg`
reg=$(($reg + 4))
done
done
if [ $2 -eq 1 ];then
echo "dumping cache descriptors"
NUM_CACHE_DESC_PER_RNG=$(($TXCMPL_CACHE_DEPTH/$TXCMPL_NUM_RNG))
TXCMPL_SZ=$(($TXCMPL_WORD*4))
TXCMPL_CACHE_SZ=$(($NUM_CACHE_DESC_PER_RNG*$TXCMPL_SZ))
reg=$(($TXCMPL_CACHE_BA + $(($ring_n*$TXCMPL_CACHE_SZ))))
for i in $(seq 0 $(($NUM_CACHE_DESC_PER_RNG - 1)))
do
echo "desc: $i"
for j in $(seq 1 $TXCMPL_WORD)
do
echo "addr_$j:0x$(printf "%x" $reg) val_$j:" `devmem $reg`
reg=$(($reg + 4))
done
done
fi
}
full_dump() {
#general dump
general_dump
#rxdesc dump
for i in $(seq 0 $(($RXDESC_NUM_RNG - 1)))
do
rxdesc_dump $i $1
done
#rxfill dump
for i in $(seq 0 $(($RXFILL_NUM_RNG - 1)))
do
rxfill_dump $i $1
done
#txdesc dump
for i in $(seq 0 $(($TXDESC_NUM_RNG - 1)))
do
txdesc_dump $i $1
done
#txcmpl dump
for i in $(seq 0 $(($TXCMPL_NUM_RNG - 1)))
do
txcmpl_dump $i $1
done
}
case $4 in
cache)
cache_dump=1;
;;
*)
cache_dump=0;
;;
esac
case $1 in
miami)
load_miami
;;
alder)
load_alder
;;
*)
echo 'sh edma_dump.sh [miami|alder] [general|txdesc|txcmpl|rxdesc|rxfill|full] [ring_num] [cache]'
exit 1
;;
esac
case $2 in
general)
echo "general dump"
general_dump
;;
txdesc)
echo "tx desc ring dump for ring: $3"
txdesc_dump $3 $cache_dump
;;
txcmpl)
echo "tx complete ring dump for ring: $3"
txcmpl_dump $3 $cache_dump
;;
rxdesc)
echo "rx desc ring dump for ring: $3"
rxdesc_dump $3 $cache_dump
;;
rxfill)
echo "rx fill ring dump for ring: $3"
rxfill_dump $3 $cache_dump
;;
full)
echo "complete dump"
full_dump $cache_dump
;;
*)
echo 'edma_dump [miami|alder] [general|txdesc|txcmpl|rxdesc|rxfill|full] [ring_num] [cache]'
exit 1
esac