MC3302_SDK_V1.1.9_202507281.../bsp/test/xc01-scan-delay/config_txrx.sh
2025-11-11 12:08:31 +08:00

181 lines
3.6 KiB
Bash
Executable File

#!/bin/sh
##########################################################
### xc01 gmac dpll config function
### set the appropriate tx/rx delay in rgmii interface
###
##########################################################
##########################################################
### Usage:
### xc01
###
###
###
##########################################################
##########################################################
### the paramters need to modify
DELAY=1
net_if=eth1
##direction--"tx" "rx"
direction="tx"
##########################################################
GMAC_CFG_0=0x2c10009C
GMAC_CFG_1=0x2c100100
########################################################
####################################
#######bit ops######################
####################################
rdata=0
## bit_modify_rdata <bit_idx> <bit_mask> <bit_val>
function bit_modify_rdata() {
mask=$(($2 << $1))
mask=$((~ $mask))
rdata=$(($rdata & $mask))
bit_val=$(($3 << $1))
rdata=$(($rdata | $bit_val))
printf "set=0x%08x\n" $rdata
}
## config_txdll val
config_txdll()
{
rdata=`devmem ${GMAC_CFG_1} 32`
printf "tx set=0x%08x\n" $rdata
bit_modify_rdata 9 1 0
devmem ${GMAC_CFG_1} 32 ${rdata}
bit_modify_rdata 11 1 1
devmem ${GMAC_CFG_1} 32 ${rdata}
bit_modify_rdata 0 0xff $1
devmem ${GMAC_CFG_1} 32 ${rdata}
bit_modify_rdata 8 0x1 1
devmem ${GMAC_CFG_1} 32 ${rdata}
bit_modify_rdata 8 0x1 0
devmem ${GMAC_CFG_1} 32 ${rdata}
bit_modify_rdata 11 1 0
devmem ${GMAC_CFG_1} 32 ${rdata}
bit_modify_rdata 9 1 1
devmem ${GMAC_CFG_1} 32 ${rdata}
}
## config_rxdll val
config_rxdll()
{
rdata=`devmem ${GMAC_CFG_0} 32`
printf "rx set=0x%08x\n" $rdata
bit_modify_rdata 21 1 0
devmem ${GMAC_CFG_0} 32 ${rdata}
bit_modify_rdata 23 1 1
devmem ${GMAC_CFG_0} 32 ${rdata}
bit_modify_rdata 12 0xff $1
devmem ${GMAC_CFG_0} 32 ${rdata}
bit_modify_rdata 20 0x1 1
devmem ${GMAC_CFG_0} 32 ${rdata}
bit_modify_rdata 20 0x1 0
devmem ${GMAC_CFG_0} 32 ${rdata}
bit_modify_rdata 23 1 0
devmem ${GMAC_CFG_0} 32 ${rdata}
bit_modify_rdata 21 1 1
devmem ${GMAC_CFG_0} 32 ${rdata}
}
## config_rxdll_neg val
config_rxdll_neg()
{
rdata=`devmem ${GMAC_CFG_0} 32`
printf "rxneg set=0x%08x\n" $rdata
bit_modify_rdata 9 1 0
devmem ${GMAC_CFG_0} 32 ${rdata}
bit_modify_rdata 11 1 1
devmem ${GMAC_CFG_0} 32 ${rdata}
bit_modify_rdata 0 0xff $1
devmem ${GMAC_CFG_0} 32 ${rdata}
bit_modify_rdata 8 0x1 1
devmem ${GMAC_CFG_0} 32 ${rdata}
bit_modify_rdata 8 0x1 0
devmem ${GMAC_CFG_0} 32 ${rdata}
bit_modify_rdata 11 1 0
devmem ${GMAC_CFG_0} 32 ${rdata}
bit_modify_rdata 9 1 1
devmem ${GMAC_CFG_0} 32 ${rdata}
}
config_delay2()
{
if [[ $1 == "eth0" ]]
then
echo "error net interface,xc01 only eth1 rgmii"
elif [[ $1 == "eth1" ]]
then
net_if=eth1
else
echo "error net interface,xc01 only eth1 rgmii"
fi
printf "GMAC_CFG_0:0x%x\n" $GMAC_CFG_0
printf "GMAC_CFG_1:0x%x\n" $GMAC_CFG_1
if [[ $3 -gt 0 && $3 -lt 256 ]]
then
DELAY=$3
else
DELAY=0
fi
if [[ $2 == "tx" ]]
then
config_txdll ${DELAY}
elif [[ $2 == "rx" ]]
then
config_rxdll ${DELAY}
config_rxdll_neg ${DELAY}
else
echo "error direction,$3! default net port:$net_if"
exit 1
fi
direction=$2
echo "used parameters..."
echo "netx:${net_if}"
echo "direction:${direction}"
echo "delay value:${DELAY}"
}
config_delay()
{
echo "start....."
echo $1
echo $2
echo $3
echo $4
config_delay2 "$@"
}
print_help()
{
echo $"Usage: $0 { <GMACx_TXDLL_CTRL0_ADDR|ethx> tx|rx delayvalue}"
}
usage_help()
{
if [ $# != 3 ];
then
print_help
echo number:$#
exit
fi
}
usage_help "$@"
config_delay "$@"