new/external/rkscript/list-iodomain.sh
2025-05-10 21:58:58 +08:00

403 lines
10 KiB
Bash
Executable File
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/bin/sh
# $1 is chip
CHIP_ID=""
HIGH_LEVEL="3.3V" # get from chip trm
LOW_LEVEL="1.8V" # get from chip trm
TOOL_HEXDUMP="NO"
VERSION="V1.0.1"
program_name="$0"
function help_msg()
{
echo "Please input chip."
echo "$program_name <chip>"
echo "chip: rv1126,rv1109,rk3308,rk3308b,rk3308bs"
exit 0
}
function echo_msg()
{
echo -e "\e[1;31m $1 \e[0m"
}
function get_reg()
{
if [ -n "$1" ]; then
_val=`io -4 -r $1`
_val=`echo ${_val##*:}`
_val=`echo 0x${_val}`
echo "$_val"
else
echo "get register error."
exit -1
fi
}
function print_val()
{
tag="$2"
if [ $(( $1 )) -eq 0 ];then
echo_msg "$tag $HIGH_LEVEL"
else
echo_msg "$tag $LOW_LEVEL"
fi
}
function list_iodomain_rv1126_rv1109()
{
iodomain_val=`get_reg 0xFE020140`
pmuio1_vsel=$(( 0x1 << 9 ))
pmuio0_vsel=$(( 0x1 << 8 ))
vccio7_vsel=$(( 0x1 << 7 ))
vccio6_vsel=$(( 0x1 << 6 ))
vccio5_vsel=$(( 0x1 << 5 ))
vccio4_vsel=$(( 0x1 << 4 ))
vccio3_vsel=$(( 0x1 << 3 ))
vccio2_vsel=$(( 0x1 << 2 ))
vccio1_vsel=$(( 0x1 << 1 ))
flash_vosel=$(( 0x1 << 0 ))
print_val $(( $iodomain_val & $pmuio1_vsel )) "pmuio1_vsel:"
print_val $(( $iodomain_val & $pmuio0_vsel )) "pmuio0_vsel:"
print_val $(( $iodomain_val & $vccio7_vsel )) "vccio7_vsel:"
print_val $(( $iodomain_val & $vccio6_vsel )) "vccio6_vsel:"
print_val $(( $iodomain_val & $vccio5_vsel )) "vccio5_vsel:"
print_val $(( $iodomain_val & $vccio4_vsel )) "vccio4_vsel:"
print_val $(( $iodomain_val & $vccio3_vsel )) "vccio3_vsel:"
print_val $(( $iodomain_val & $vccio2_vsel )) "vccio2_vsel:"
if [ $(( $iodomain_val & $flash_vosel )) -eq 0 ];then
# read iomux
gpio0b3_iomux_val=`get_reg 0xFE020008`
gpio0b3_iomux_val_off=$(( 0x1 << 12 ))
if [ $(( $gpio0b3_iomux_val & $gpio0b3_iomux_val_off )) -eq 0 ];then
# read gpio data direction
gpio0b3_data_direction_val=`get_reg 0xFF460008`
gpio0b3_data_direction_val_off=$(( 0x1 << 11 ))
if [ $(( $gpio0b3_data_direction_val & $gpio0b3_data_direction_val_off )) -eq 0 ];then
# read gpio data register
gpio0b3_data_reg_val=`get_reg 0xFF460070`
gpio0b3_data_reg_val_off=$(( 0x1 << 11 ))
print_val $(( $gpio0b3_data_reg_val & $gpio0b3_data_reg_val_off )) "vccio1_vsel:"
else
echo "Check vccio1_vsel error!!!"
fi
else
echo "Check vccio1_vsel error!!!"
fi
fi
if [ $(( $iodomain_val & $flash_vosel )) -eq 1 ];then
print_val $(( $iodomain_val & $vccio1_vsel )) "vccio1_vsel:"
fi
}
function list_iodomain_rk3308_rk3308b_rk3308bs()
{
iodomain_val=`get_reg 0xFF000300`
flash_vosel=$(( 0x1 << 8 ))
vccio5_vsel=$(( 0x1 << 5 ))
vccio4_vsel=$(( 0x1 << 4 ))
vccio3_vsel=$(( 0x1 << 3 ))
vccio2_vsel=$(( 0x1 << 2 ))
vccio1_vsel=$(( 0x1 << 1 ))
vccio0_vsel=$(( 0x1 << 0 ))
if [ $(( $iodomain_val & $flash_vosel )) -eq $(( 0x1 << 8 )) ];then
print_val $(( $iodomain_val & $vccio5_vsel )) "vccio5_vsel:"
print_val $(( $iodomain_val & $vccio4_vsel )) "vccio4_vsel:"
print_val $(( $iodomain_val & $vccio3_vsel )) "vccio3_vsel:"
print_val $(( $iodomain_val & $vccio2_vsel )) "vccio2_vsel:"
print_val $(( $iodomain_val & $vccio1_vsel )) "vccio1_vsel:"
print_val $(( $iodomain_val & $vccio0_vsel )) "vccio0_vsel:"
fi
if [ $(( $iodomain_val & $flash_vosel )) -eq 0 ];then
# read iomux
gpio0a4_iomux_val=`get_reg 0xFF000000`
gpio0a4_iomux_val_off=$(( 0x1 << 8 ))
if [ $(( $gpio0a4_iomux_val & $gpio0a4_iomux_val_off )) -eq 0 ];then
# read gpio data direction
gpio0a4_data_direction_val=`get_reg 0xFF220004`
gpio0a4_data_direction_val_off=$(( 0x1 << 4 ))
if [ $(( $gpio0a4_data_direction_val & $gpio0b3_data_direction_val_off )) -eq 0 ];then
# read gpio data register
gpio0a4_data_reg_val=`get_reg 0xFF220050`
gpio0a4_data_reg_val_off=$(( 0x1 << 4 ))
print_val $(( $iodomain_val & $vccio5_vsel )) "vccio5_vsel:"
print_val $(( $iodomain_val & $vccio4_vsel )) "vccio4_vsel:"
print_val $(( $gpio0a4_data_reg_val & $gpio0a4_data_reg_val_off )) "vccio3_vsel:"
print_val $(( $iodomain_val & $vccio2_vsel )) "vccio2_vsel:"
print_val $(( $iodomain_val & $vccio1_vsel )) "vccio1_vsel:"
print_val $(( $iodomain_val & $vccio0_vsel )) "vccio0_vsel:"
else
echo "Check vccio1_vsel error!!!"
fi
else
echo "Check vccio1_vsel error!!!"
fi
fi
}
function list_iodomain_rk3326_rk3326s()
{
iodomain0_val=`get_reg 0xFF140180`
iodomain1_val=`get_reg 0xFF010100`
pmuio2_vsel=$(( 0x1 << 15 ))
pmuio1_vsel=$(( 0x1 << 14 ))
vccio5_vsel=$(( 0x1 << 6 ))
vccio4_vsel=$(( 0x1 << 5 ))
vccio3_vsel=$(( 0x1 << 4 ))
vccio2_vsel=$(( 0x1 << 3 ))
vccio1_vsel=$(( 0x1 << 2 ))
print_val $(( $iodomain1_val & $pmuio2_vsel )) "pmuio2_vsel:"
print_val $(( $iodomain1_val & $pmuio1_vsel )) "pmuio1_vsel:"
print_val $(( $iodomain0_val & $vccio5_vsel )) "vccio5_vsel:"
print_val $(( $iodomain0_val & $vccio4_vsel )) "vccio4_vsel:"
print_val $(( $iodomain0_val & $vccio3_vsel )) "vccio3_vsel:"
print_val $(( $iodomain0_val & $vccio2_vsel )) "vccio2_vsel:"
print_val $(( $iodomain0_val & $vccio1_vsel )) "vccio1_vsel:"
}
function list_iodomain_rk3566_rk3568()
{
iodomain0_val=`get_reg 0xFDC20140`
iodomain1_val=`get_reg 0xFDC20144`
iodomain2_val=`get_reg 0xFDC20148`
pmuio2_vsel=$(( 0x1 << 1 ))
vccio7_vsel=$(( 0x1 << 7 ))
vccio6_vsel=$(( 0x1 << 6 ))
vccio5_vsel=$(( 0x1 << 5 ))
vccio4_vsel=$(( 0x1 << 4 ))
vccio3_vsel=$(( 0x1 << 3 ))
vccio2_vsel=$(( 0x1 << 2 ))
vccio1_vsel=$(( 0x1 << 1 ))
print_val $(( $iodomain2_val & $pmuio2_vsel )) "pmuio2_vsel:"
print_val $(( $iodomain0_val & $vccio7_vsel )) "vccio7_vsel:"
print_val $(( $iodomain0_val & $vccio6_vsel )) "vccio6_vsel:"
print_val $(( $iodomain0_val & $vccio5_vsel )) "vccio5_vsel:"
print_val $(( $iodomain0_val & $vccio4_vsel )) "vccio4_vsel:"
print_val $(( $iodomain0_val & $vccio3_vsel )) "vccio3_vsel:"
print_val $(( $iodomain0_val & $vccio2_vsel )) "vccio2_vsel:"
print_val $(( $iodomain0_val & $vccio1_vsel )) "vccio1_vsel:"
}
function chk_rv1126_rv1109()
{
nvem_path="/sys/bus/nvmem/devices/rockchip-otp0/nvmem"
iff=`hexdump -C $nvem_path | grep -Ew "00000000 52 56 11 26|00000000 52 56 11 09"`
if [ -n "$iff" ]; then
CHIP_ID=rv1126_rv1109
HIGH_LEVEL="3.3V"
LOW_LEVEL="1.8V"
return 0
fi
return 1
}
function chk_rk3308_rk3308b_rk3308bs()
{
nvem_path="/sys/bus/nvmem/devices/rockchip-otp0/nvmem"
iff=`hexdump -C $nvem_path | grep -Ew "00000000 52 4b 33 08"`
if [ -n "$iff" ]; then
CHIP_ID=rk3308
HIGH_LEVEL="3.3V"
LOW_LEVEL="1.8V"
return 0
fi
return 1
}
function chk_rk3326_rk3326s()
{
nvem_path="/sys/bus/nvmem/devices/rockchip-otp0/nvmem"
iff=`hexdump -C $nvem_path | grep -Ew "00000000 52 4b 33 26"`
if [ -n "$iff" ]; then
CHIP_ID=rk3326
HIGH_LEVEL="3.3V"
LOW_LEVEL="1.8V"
return 0
fi
return 1
}
function chk_rk3566_rk3568()
{
nvem_path="/sys/bus/nvmem/devices/rockchip-otp0/nvmem"
iff=`hexdump -C $nvem_path | grep -Ew "00000000 52 4b 35 68|00000000 52 4b 35 66"`
if [ -n "$iff" ]; then
CHIP_ID=rk356x
HIGH_LEVEL="3.3V"
LOW_LEVEL="1.8V"
return 0
fi
return 1
}
function get_chip_id()
{
# if error, exit -1
if [ "$TOOL_HEXDUMP" = "YES" ];then
# if check otp success, just return CHIP_ID and ignore $1
chk_rv1126_rv1109
if [ $? -eq 0 ];then
return 0
fi
chk_rk3308_rk3308b_rk3308bs
if [ $? -eq 0 ];then
return 0
fi
chk_rk3326_rk3326s
if [ $? -eq 0 ];then
return 0
fi
chk_rk3566_rk3568
if [ $? -eq 0 ];then
return 0
fi
fi
# if check otp failed, check CHIP_ID with $1
case "$1" in
rv1126|rv1109|RV1126|RV1109)
chip_id=`io -4 -r 0XFE000110 | grep -w 00001109`
if [ $? -eq 0 -a -n "$chip_id" ]; then
CHIP_ID=rv1126_rv1109
HIGH_LEVEL="3.3V"
LOW_LEVEL="1.8V"
return 0
fi
;;
rk3308bs|RK3308BS)
chip_id=`io -4 -r 0XFF000800 | grep -w 0003308c`
if [ $? -eq 0 -a -n "$chip_id" ]; then
CHIP_ID=$1
HIGH_LEVEL="3.3V"
LOW_LEVEL="1.8V"
return 0
fi
;;
rk3308b|RK3308B)
chip_id=`io -4 -r 0XFF000800 | grep -w 00003308`
if [ $? -eq 0 -a -n "$chip_id" ]; then
CHIP_ID=$1
HIGH_LEVEL="3.3V"
LOW_LEVEL="1.8V"
return 0
fi
;;
rk3308|RK3308)
chip_id=`io -4 -r 0XFF000800 | grep -w 00000cea`
if [ $? -eq 0 -a -n "$chip_id" ]; then
CHIP_ID=$1
HIGH_LEVEL="3.3V"
LOW_LEVEL="1.8V"
return 0
fi
;;
rk3326|RK3326)
chip_id=`io -4 -r 0XFF140800 | grep -w 00003326`
if [ $? -eq 0 -a -n "$chip_id" ]; then
CHIP_ID=$1
HIGH_LEVEL="3.3V"
LOW_LEVEL="1.8V"
return 0
fi
;;
rk3326s|RK3326S)
chip_id=`io -4 -r 0XFF140800 | grep -w 00003326`
if [ $? -eq 0 -a -n "$chip_id" ]; then
CHIP_ID=$1
HIGH_LEVEL="3.3V"
LOW_LEVEL="1.8V"
return 0
fi
;;
rk3566|rk3568|RK3566|RK3568)
chip_id=`io -4 -r 0XFDC60800 | grep -w 00003566`
if [ $? -eq 0 -a -n "$chip_id" ]; then
CHIP_ID=$1
HIGH_LEVEL="3.3V"
LOW_LEVEL="1.8V"
return 0
fi
;;
*)
help_msg
;;
esac
echo "Not found CHIP_ID...exit!!!"
exit 0
}
# input parameter
# CHIP_ID --> rv1126,rk3308,rk3308b,rk3308bs,rk3566,rk3568
# HIGH_LEVEL --> "3.3V"
# LOW_LEVEL --> "1.8V"
function get_iodomain_val()
{
# if error, exit -1
echo_msg "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
echo_msg "XXXXXXXXXX PLEASE CHECK IO-DOMAIN !!!!!!!!!!!!!!!"
echo_msg "XXXXXXXXXX 请务必检查IO电源域配置 !!!!!!!!!!!!!!!"
echo_msg "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
echo_msg "Get IO DOMAIN VALUE:"
case "$CHIP_ID" in
rv1126|rv1109|RV1126|RV1109|rv1126_rv1109|RV1126_RV1109)
list_iodomain_rv1126_rv1109
;;
rk3308bs|rk3308b|rk3308|RK3308BS|RK3308B|RK3308)
list_iodomain_rk3308_rk3308b_rk3308bs
;;
rk3326|rk3326s|RK3326|RK3326)
list_iodomain_rk3326_rk3326s
;;
rk3566|rk3568|rk356x|RK3566|RK3568|RK356X)
echo_msg "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
echo_msg "注意事项PMUIO1/PMUIO2 固定不可配"
echo_msg "VCCIO2电平由硬件FLASH_VOL_SEL决定:"
echo_msg "当VCCIo2供电是1.8V,则FLASH_VOL_SEL管脚必须保持为高电平;"
echo_msg "当VCCIO2供电是3.3V,则FLASH_VOL_SEL管脚必须保持为低电平;"
echo_msg "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
list_iodomain_rk3566_rk3568
;;
*)
help_msg
;;
esac
echo_msg "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
exit 0
}
function chk_env()
{
echo_msg "$0 version: $VERSION"
# if error, exit -1
which io &>/dev/null
if [ $? -ne 0 ]; then
echo_msg "install io command first!!!"
exit -1
fi
which hexdump &>/dev/null
if [ $? -eq 0 ]; then
TOOL_HEXDUMP="YES"
fi
}
if [ "$1" = "-h" -o "$1" = "--help" ]; then
help_msg
fi
chk_env
get_chip_id $1
echo_msg "Get CHIP ID: $CHIP_ID"
get_iodomain_val