#!/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 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 { tx|rx delayvalue}" } usage_help() { if [ $# != 3 ]; then print_help echo number:$# exit fi } usage_help "$@" config_delay "$@"