181 lines
3.6 KiB
Bash
Executable File
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 "$@"
|