#!/bin/sh action=$1 nic_type=$2 slot_id=$3 path=`pwd` i2c_script="${path}/i2c_m7.sh" fmt_print="${path}/format_print.sh" pca9548_slave="" pca9641_slave="" i2c_bus="" pca9548_channel="" is_have_pca9641=0 # An func to echo a error code and then exit # @Param1 error code throw_error(){ echo $1 exit 1 } record_i2c_status(){ $fmt_print "log" "Info" "[platform_5688m7] Start record i2c configuration" $fmt_print "log" "Info" "Nic Type: $nic_type" $fmt_print "log" "Info" "Nic slot: $slot_id" $fmt_print "log" "Info" "i2c bus: $i2c_bus" $fmt_print "log" "Info" "is have pca9641: $is_have_pca9641" $fmt_print "log" "Info" "pca9641 slave: $is_have_pca9641" $fmt_print "log" "Info" "pca9548 slave: $pca9548_slave" $fmt_print "log" "Info" "pca9548 channel: $pca9548_channel" } set_i2c_config(){ # set pca9641 address && I2C BUS if [ "${nic_type}" == "ocp" ];then $fmt_print "console" "Error" "[platform_5688m7] Unsupport OCP Nic" exit 1 else is_have_pca9641=1 i2c_bus=12 pca9641_slave="0x31" if [ $slot_id -le 3 ];then pca9548_slave="0x71" else pca9548_slave="0x72" fi fi # set pca9548 switch channel if [ "${nic_type}" == "ocp" ];then $fmt_print "console" "Error" "[platform_5688m7] Unsupport OCP Nic" exit 1 else if [ $slot_id -eq 0 ];then pca9548_channel="0x01" elif [ $slot_id -eq 1 ];then pca9548_channel="0x02" elif [ $slot_id -eq 2 ];then pca9548_channel="0x04" elif [ $slot_id -eq 3 ];then pca9548_channel="0x08" elif [ $slot_id -eq 4 ];then pca9548_channel="0x01" elif [ $slot_id -eq 5 ];then pca9548_channel="0x02" elif [ $slot_id -eq 6 ];then pca9548_channel="0x04" elif [ $slot_id -eq 7 ];then pca9548_channel="0x08" else $fmt_print "console" "Warning" "Unspecified card slot!" fi fi record_i2c_status } get_pca9641_control(){ $fmt_print "log" "Info" "[platform_5688m7] Start Get pca9641 control" # Request 9641 lock res_lock=`i2ctransfer -y $i2c_bus w2@$pca9641_slave 0x01 0x81 r1` $fmt_print "log" "Info" "[platform_5688m7] After request 9641 lock, The REG value is $res_lock" # Build 9641 Connection res_build=`i2ctransfer -y $i2c_bus w2@$pca9641_slave 0x01 0x85 r1` $fmt_print "log" "Info" "[platform_5688m7] After Build 9641 connection, The REG value is $res_build" if [ "$res_build" != "0x87" ];then $fmt_print "console" "Error" "Cannot establish connection with pca9641 !!!" throw_error "-1" fi } select_pca9548_channel(){ $fmt_print "log" "Info" "[platform_5688m7] Start Switch PCA9548" $i2c_script "$i2c_bus" 1 "$pca9548_slave" "$pca9548_channel" 0 } build_i2c_connect(){ $fmt_print "log" "Info" "[platform_5688m7] Start build i2c connect" set_i2c_config if [ $is_have_pca9641 -eq 1 ];then get_pca9641_control fi select_pca9548_channel echo "$i2c_bus" } # switch pca9548 channels then do i2cdetect one times # @Param1 i2c bus number # @Param2 pca9548 slave address # @Param3 pca9548 channel hex value # @Param4 pca9548 channel # @Param5 pcie slot number do_i2c_detect(){ if [ "${nic_type}" == "ocp" ];then $fmt_print "console" "Info" "OCP slot $5 : bus$1 9548channel$4" else $fmt_print "console" "Info" "PCIe slot $5 : bus$1 9548channel$4" fi i2ctransfer -y $1 w1@$2 $3 i2cdetect -y $1 } detect_on_server(){ $fmt_print "console" "Info" "[platform_5688m7] Start i2c detect" if [ "${nic_type}" == "ocp" ];then $fmt_print "console" "Error" "[platform_5688m7] Unsupport OCP Nic I2C Detect" else i2c_bus=12 pca9641_slave="0x31" get_pca9641_control do_i2c_detect $i2c_bus 0x71 0x01 0 0 do_i2c_detect $i2c_bus 0x71 0x02 1 1 do_i2c_detect $i2c_bus 0x71 0x04 2 2 do_i2c_detect $i2c_bus 0x71 0x08 3 3 do_i2c_detect $i2c_bus 0x72 0x01 0 4 do_i2c_detect $i2c_bus 0x72 0x02 1 5 do_i2c_detect $i2c_bus 0x72 0x04 2 6 do_i2c_detect $i2c_bus 0x72 0x08 3 7 fi } # --------------------------------------------------- # Start Execute Script # --------------------------------------------------- case "${action}" in "connect") build_i2c_connect ;; "detect") detect_on_server ;; *) $fmt_print "console" "Error" "[platform_5688m7] Unspecified Operation : $action" exit 1 ;; esac exit 0