Initial commit

This commit is contained in:
Your Name
2026-04-23 17:07:55 +08:00
commit b7e39e063b
16725 changed files with 1625565 additions and 0 deletions
+18
View File
@@ -0,0 +1,18 @@
FILESEXTRAPATHS:prepend := "${THISDIR}/${PN}/${MACHINE}:"
SUMMARY = "AMD FPGA Register Dump Utility"
DESCRIPTION = "AMD FPGA Register Dump Utility"
LICENSE = "Apache-2.0"
LIC_FILES_CHKSUM = "file://LICENSE;md5=5e24678b8d0883d9dfa9e9473069ddd2"
RDEPENDS:${PN} = "bash"
SRCREV = "${AUTOREV}"
SRC_URI = "file://fpgardu.sh"
SRC_URI += "file://LICENSE"
S = "${WORKDIR}"
do_install () {
install -d ${D}${bindir}
install -m 0755 ${S}/fpgardu.sh ${D}${bindir}/
}
@@ -0,0 +1,13 @@
Full Description:
Different components of meta-amd are under different licenses (a mix
of MIT and Apache-2.0). Please see:
COPYING.Apache-2.0
COPYING.MIT (MIT)
All metadata is MIT licensed unless otherwise stated. Source code
included in tree for individual recipes is under the LICENSE stated in
the associated recipe (.bb file) unless otherwise stated.
License information for any other files is either explicitly stated
or defaults to Apache-2.0.
@@ -0,0 +1,277 @@
#!/bin/bash
echo
echo "-----FPGA Daytona<x> CRB Register Dump Utility"
echo
I2CBUS=2
FPGAADDR=0x41
FPGA_REG=1
DATA=$(i2cget -y $I2CBUS $FPGAADDR "$(printf '0x%x' $FPGA_REG)")
echo ----------FPGAreg$FPGA_REG-------------------------
echo M_ABCD_EVENT_R_BUF_N----- : $(((DATA & 0x80) >> 7))
echo M_EFGH_EVENT_R_BUF_N----- : $(((DATA & 0x40) >> 6))
echo M_IJKL_EVENT_R_BUF_N----- : $(((DATA & 0x20) >> 5))
echo M_MNOP_EVENT_R_BUF_N----- : $(((DATA & 0x10) >> 4))
FPGA_REG=2
DATA=$(i2cget -y $I2CBUS $FPGAADDR "$(printf '0x%x' $FPGA_REG)")
echo ----------FPGAreg$FPGA_REG-------------------------
echo BMC_NVDIMM_PRSNT_R_N----- : $(((DATA & 0x80) >> 7))
echo FM_ADR_TRIGGER_CPU_BUFF_N : $(((DATA & 0x40) >> 6))
echo FM_BMC_ONCTL_N----------- : $(((DATA & 0x20) >> 5))
echo FM_NVDIMM_EVENT_N-------- : $(((DATA & 0x10) >> 4))
echo P0_FORCE_SELFREFRESH----- : $(((DATA & 0x08) >> 3))
echo P0_NV_SAVE--------------- : $(((DATA & 0x04) >> 2))
echo P1_FORCE_SELFREFRESH----- : $(((DATA & 0x02) >> 1))
echo P1_NV_SAVE--------------- : $((DATA & 0x01))
FPGA_REG=3
DATA=$(i2cget -y $I2CBUS $FPGAADDR "$(printf '0x%x' $FPGA_REG)")
echo ----------FPGAreg$FPGA_REG-------------------------
echo CPLD_PWR_BTN_N----------- : $(((DATA & 0x80) >> 7))
echo FM_DEBUG_RST_BTN_N------- : $(((DATA & 0x40) >> 6))
echo P0_PWR_BTN_N------------- : $(((DATA & 0x20) >> 5))
echo PWRBTN_CPLD_IN_N--------- : $(((DATA & 0x10) >> 4))
echo FM_PLD_DEBUG_MODE_N------ : $(((DATA & 0x08) >> 3))
echo FM_PLD_DEBUG0------------ : $(((DATA & 0x04) >> 2))
echo FM_PLD_DEBUG1------------ : $(((DATA & 0x02) >> 1))
echo FM_PLD_DEBUG0------------ : $((DATA & 0x01))
FPGA_REG=4
DATA=$(i2cget -y $I2CBUS $FPGAADDR "$(printf '0x%x' $FPGA_REG)")
echo ----------FPGAreg$FPGA_REG-------------------------
echo FM_PLD_DEBUG3------------ : $(((DATA & 0x80) >> 7))
echo FM_PLD_DEBUG4------------ : $(((DATA & 0x40) >> 6))
echo FM_PLD_DEBUG5------------ : $(((DATA & 0x20) >> 5))
echo FM_PLD_DEBUG6------------ : $(((DATA & 0x10) >> 4))
echo FM_PLD_DEBUG7------------ : $(((DATA & 0x08) >> 3))
echo BP_SIG_CABLE_PRES_R_N---- : $(((DATA & 0x04) >> 2))
echo CPLD_P0_THERMTRIP_N------ : $(((DATA & 0x02) >> 1))
echo CPLD_P1_THERMTRIP_N------ : $((DATA & 0x01))
FPGA_REG=5
DATA=$(i2cget -y $I2CBUS $FPGAADDR "$(printf '0x%x' $FPGA_REG)")
echo ----------FPGAreg$FPGA_REG-------------------------
echo FM_BMC_CPLD_GPO---------- : $(((DATA & 0x80) >> 7))
echo FM_BMC_READY_N----------- : $(((DATA & 0x40) >> 6))
echo FM_CPLD_BMC_PWRDN_N------ : $(((DATA & 0x20) >> 5))
echo LED_PWR_AMBER_R---------- : $(((DATA & 0x10) >> 4))
echo LED_PWR_GRN_R------------ : $(((DATA & 0x08) >> 3))
echo P0_CORETYPE-------------- : $(((DATA & 0x04) >> 2))
echo P0_CPU_PRESENT_HDT------- : $(((DATA & 0x02) >> 1))
echo P0_CPU_PRESENT_N--------- : $((DATA & 0x01))
FPGA_REG=6
DATA=$(i2cget -y $I2CBUS $FPGAADDR "$(printf '0x%x' $FPGA_REG)")
echo ----------FPGAreg$FPGA_REG-------------------------
echo P0_NMI_SYNC_FLOOD_N------ : $(((DATA & 0x80) >> 7))
echo P0_PWROK_RST_BUF_EN_N---- : $(((DATA & 0x40) >> 6))
echo P0_SP3R1----------------- : $(((DATA & 0x20) >> 5))
echo P0_SP3R2_R--------------- : $(((DATA & 0x10) >> 4))
echo P1_CORETYPE-------------- : $(((DATA & 0x08) >> 3))
echo P1_CPU_PRESENT_HDT------- : $(((DATA & 0x04) >> 2))
echo P1_CPU_PRESENT_N--------- : $(((DATA & 0x02) >> 1))
echo P1_PWROK_RST_BUF_EN_N---- : $((DATA & 0x01))
FPGA_REG=7
DATA=$(i2cget -y $I2CBUS $FPGAADDR "$(printf '0x%x' $FPGA_REG)")
echo ----------FPGAreg$FPGA_REG-------------------------
echo P1_SP3R1----------------- : $(((DATA & 0x80) >> 7))
echo P1_SP3R2_R--------------- : $(((DATA & 0x40) >> 6))
echo PSU1_BLADE_EN_R_N-------- : $(((DATA & 0x20) >> 5))
echo SLOT1_CLKREQ_N----------- : $(((DATA & 0x10) >> 4))
echo SLOT1_PRSNT_N------------ : $(((DATA & 0x08) >> 3))
echo SLOT2_CLKREQ_N----------- : $(((DATA & 0x04) >> 2))
echo SLOT2_PRSNT_N------------ : $(((DATA & 0x02) >> 1))
echo SMB_M2_S0_ALERT_N-------- : $((DATA & 0x01))
FPGA_REG=8
DATA=$(i2cget -y $I2CBUS $FPGAADDR "$(printf '0x%x' $FPGA_REG)")
echo ----------FPGAreg$FPGA_REG-------------------------
echo SMB_M2_S1_ALERT_N-------- : $(((DATA & 0x80) >> 7))
echo FM_BMC_READ_SPD_TEMP----- : $(((DATA & 0x40) >> 6))
echo PWR_ALL_ON_N------------- : $(((DATA & 0x20) >> 5))
echo I2C_SELECT_CPLD---------- : $(((DATA & 0x10) >> 4))
echo CPLD_PWRBRK_N------------ : $(((DATA & 0x08) >> 3))
echo FM_PWRBRK_N-------------- : $(((DATA & 0x04) >> 2))
echo PSU1_THROTTLE_N---------- : $(((DATA & 0x02) >> 1))
echo PSU2_ALERT_EN_N---------- : $((DATA & 0x01))
FPGA_REG=9
DATA=$(i2cget -y $I2CBUS $FPGAADDR "$(printf '0x%x' $FPGA_REG)")
echo ----------FPGAreg$FPGA_REG-------------------------
echo PSU2_ALERT_N------------- : $(((DATA & 0x80) >> 7))
echo RM_THROTTLE_EN_N----- ----: $(((DATA & 0x40) >> 6))
echo FM_P1V8_AUX_P0_EN-------- : $(((DATA & 0x20) >> 5))
echo FM_P1V8_AUX_P1_EN-------- : $(((DATA & 0x10) >> 4))
echo FM_P1V8_P0_EN------------ : $(((DATA & 0x08) >> 3))
echo FM_P1V8_P1_EN------------ : $(((DATA & 0x04) >> 2))
echo FM_P5V_EN---------------- : $(((DATA & 0x02) >> 1))
echo FM_PS_P12V_EN------------ : $((DATA & 0x01))
FPGA_REG=10
DATA=$(i2cget -y $I2CBUS $FPGAADDR "$(printf '0x%x' $FPGA_REG)")
echo ----------FPGAreg$FPGA_REG-------------------------
echo FM_PS_P12V_FAN_EN-------- : $(((DATA & 0x80) >> 7))
echo FM_PVDDIO_ABCD_EN-------- : $(((DATA & 0x40) >> 6))
echo FM_PVDDIO_EFGH_EN-------- : $(((DATA & 0x20) >> 5))
echo FM_PVDDIO_IJKL_EN-------- : $(((DATA & 0x10) >> 4))
echo FM_PVDDIO_MNOP_EN-------- : $(((DATA & 0x08) >> 3))
echo FM_PVPP_ABCD_EN---------- : $(((DATA & 0x04) >> 2))
echo FM_PVPP_EFGH_EN---------- : $(((DATA & 0x02) >> 1))
echo FM_PVPP_IJKL_EN---------- : $((DATA & 0x01))
FPGA_REG=11
DATA=$(i2cget -y $I2CBUS $FPGAADDR "$(printf '0x%x' $FPGA_REG)")
echo ----------FPGAreg$FPGA_REG-------------------------
echo FM_PVPP_MNOP_EN---------- : $(((DATA & 0x80) >> 7))
echo P0_VDDCR_CPU_EN1--------- : $(((DATA & 0x40) >> 6))
echo P0_VDDCR_CPU_PWROK_R----- : $(((DATA & 0x20) >> 5))
echo P0_VDDCR_SOC_AUX_EN------ : $(((DATA & 0x10) >> 4))
echo P0_VDDCR_SOC_EN1--------- : $(((DATA & 0x08) >> 3))
echo P0_VDDCR_SOC_PWROK_R----- : $(((DATA & 0x04) >> 2))
echo P1_VDDCR_CPU_EN1--------- : $(((DATA & 0x02) >> 1))
echo P1_VDDCR_CPU_PWROK_R----- : $((DATA & 0x01))
FPGA_REG=12
DATA=$(i2cget -y $I2CBUS $FPGAADDR "$(printf '0x%x' $FPGA_REG)")
echo ----------FPGAreg$FPGA_REG-------------------------
echo P1_VDDCR_SOC_AUX_EN------ : $(((DATA & 0x80) >> 7))
echo P1_VDDCR_SOC_EN1--------- : $(((DATA & 0x40) >> 6))
echo P1_VDDCR_SOC_PWROK_R----- : $(((DATA & 0x20) >> 5))
echo PVTT_ABCD_EN------------- : $(((DATA & 0x10) >> 4))
echo PVTT_EFGH_EN------------- : $(((DATA & 0x08) >> 3))
echo PVTT_IJKL_EN------------- : $(((DATA & 0x04) >> 2))
echo PVTT_MNOP_EN------------- : $(((DATA & 0x02) >> 1))
echo VR_P3V3_EN_N------------- : $((DATA & 0x01))
FPGA_REG=13
DATA=$(i2cget -y $I2CBUS $FPGAADDR "$(printf '0x%x' $FPGA_REG)")
echo ----------FPGAreg$FPGA_REG-------------------------
echo ASSERT_P0_PWROK_L------- : $(((DATA & 0x80) >> 7))
echo ASSERT_P1_PWROK_L------- : $(((DATA & 0x40) >> 6))
echo HDT_HDR_PWROK----------- : $(((DATA & 0x20) >> 5))
echo P0_33_PWROK------------- : $(((DATA & 0x10) >> 4))
echo P0_PWR_GOOD------------- : $(((DATA & 0x08) >> 3))
echo P0_PWRGD_OUT------------ : $(((DATA & 0x04) >> 2))
echo P0_VDDCR_CPU_PG1-------- : $(((DATA & 0x02) >> 1))
echo P0_VDDCR_SOC_PG1-------- : $((DATA & 0x01))
FPGA_REG=14
DATA=$(i2cget -y $I2CBUS $FPGAADDR "$(printf '0x%x' $FPGA_REG)")
echo ----------FPGAreg$FPGA_REG-------------------------
echo P1_33_PWROK------------- : $(((DATA & 0x80) >> 7))
echo P1_PWR_GOOD------------- : $(((DATA & 0x40) >> 6))
echo P1_PWRGD_OUT------------ : $(((DATA & 0x20) >> 5))
echo P1_VDDCR_CPU_PG1-------- : $(((DATA & 0x10) >> 4))
echo P1_VDDCR_SOC_PG1-------- : $(((DATA & 0x08) >> 3))
echo P3V3_AUX_PWRGD---------- : $(((DATA & 0x04) >> 2))
echo PWRGD_BMC_ALL----------- : $(((DATA & 0x02) >> 1))
echo PWRGD_P0_VDDCR_SOC_AUX-- : $((DATA & 0x01))
FPGA_REG=15
DATA=$(i2cget -y $I2CBUS $FPGAADDR "$(printf '0x%x' $FPGA_REG)")
echo ----------FPGAreg$FPGA_REG-------------------------
echo PWRGD_P1_VDDCR_SOC_AUX-- : $(((DATA & 0x80) >> 7))
echo PWRGD_P12V-------------- : $(((DATA & 0x40) >> 6))
echo PWRGD_P12V_FAN_R-------- : $(((DATA & 0x20) >> 5))
echo PWRGD_P1V8_AUX_P0------- : $(((DATA & 0x10) >> 4))
echo PWRGD_P1V8_AUX_P1------- : $(((DATA & 0x08) >> 3))
echo PWRGD_P1V8_P0----------- : $(((DATA & 0x04) >> 2))
echo PWRGD_P1V8_P1----------- : $(((DATA & 0x02) >> 1))
echo PWRGD_P3V3_R3----------- : $((DATA & 0x01))
FPGA_REG=16
DATA=$(i2cget -y $I2CBUS $FPGAADDR "$(printf '0x%x' $FPGA_REG)")
echo ----------FPGAreg$FPGA_REG-------------------------
echo PWRGD_P5V_CPLD_R-------- : $(((DATA & 0x80) >> 7))
echo PWRGD_PVDDIO_ABCD------- : $(((DATA & 0x40) >> 6))
echo PWRGD_PVDDIO_EFGH------- : $(((DATA & 0x20) >> 5))
echo PWRGD_PVDDIO_IJKL------- : $(((DATA & 0x10) >> 4))
echo PWRGD_PVDDIO_MNOP------- : $(((DATA & 0x08) >> 3))
echo PWRGD_PVPP_ABCD--------- : $(((DATA & 0x04) >> 2))
echo PWRGD_PVPP_EFGH--------- : $(((DATA & 0x02) >> 1))
echo PWRGD_PVPP_IJKL--------- : $((DATA & 0x01))
FPGA_REG=17
DATA=$(i2cget -y $I2CBUS $FPGAADDR "$(printf '0x%x' $FPGA_REG)")
echo ----------FPGAreg$FPGA_REG-------------------------
echo PWRGD_PVPP_MNOP--------- : $(((DATA & 0x80) >> 7))
echo PWRGD_PVTT_ABCD--------- : $(((DATA & 0x40) >> 6))
echo PWRGD_PVTT_EFGH--------- : $(((DATA & 0x20) >> 5))
echo PWRGD_PVTT_IJKL--------- : $(((DATA & 0x10) >> 4))
echo PWRGD_PVTT_MNOP--------- : $(((DATA & 0x08) >> 3))
echo PWRGD_SYS_BMC_PWROK----- : $(((DATA & 0x04) >> 2))
echo P0_SLP_S3_N------------- : $(((DATA & 0x02) >> 1))
echo P0_SLP_S5_N------------- : $((DATA & 0x01))
FPGA_REG=18
DATA=$(i2cget -y $I2CBUS $FPGAADDR "$(printf '0x%x' $FPGA_REG)")
echo ----------FPGAreg$FPGA_REG-------------------------
echo PSU2_PS_ON_N----------- : $(((DATA & 0x80) >> 7))
echo BMC_PWRCAP_N----------- : $(((DATA & 0x40) >> 6))
echo CPLD_FPH_ALERT_R_N----- : $(((DATA & 0x20) >> 5))
echo FAST_PROCHOT_R_N------- : $(((DATA & 0x10) >> 4))
echo FM_THROTTLE_IN_N------- : $(((DATA & 0x08) >> 3))
echo HSC_GPIO0_PLD_N-------- : $(((DATA & 0x04) >> 2))
echo HSC_GPIO1_PLD_N-------- : $(((DATA & 0x02) >> 1))
echo P0_BMC_PROCHOT_N------- : $((DATA & 0x01))
FPGA_REG=19
DATA=$(i2cget -y $I2CBUS $FPGAADDR "$(printf '0x%x' $FPGA_REG)")
echo ----------FPGAreg$FPGA_REG-------------------------
echo P1_BMC_PROCHOT_N------- : $(((DATA & 0x80) >> 7))
echo PMB_ALERT_SW_N--------- : $(((DATA & 0x40) >> 6))
echo RM_THROTTLE_SW_N------- : $(((DATA & 0x20) >> 5))
echo RST_PLTRST_DLY--------- : $(((DATA & 0x10) >> 4))
echo UV_ALERT_R_N----------- : $(((DATA & 0x08) >> 3))
echo ASSERT_P0_RESET-------- : $(((DATA & 0x04) >> 2))
echo ASSERT_P1_RESET-------- : $(((DATA & 0x02) >> 1))
echo HDT_HDR_RESET_L-------- : $((DATA & 0x01))
FPGA_REG=20
DATA=$(i2cget -y $I2CBUS $FPGAADDR "$(printf '0x%x' $FPGA_REG)")
echo ----------FPGAreg$FPGA_REG-------------------------
echo RST_CPLD_BMC_R_N------- : $(((DATA & 0x80) >> 7))
echo RST_CPU_1V8_N---------- : $(((DATA & 0x40) >> 6))
echo RST_KBRST_P0_N--------- : $(((DATA & 0x20) >> 5))
echo RST_P0_3V3_N----------- : $(((DATA & 0x10) >> 4))
echo RST_P0_PE0_N----------- : $(((DATA & 0x08) >> 3))
echo RST_P0_PE1_N----------- : $(((DATA & 0x04) >> 2))
echo RST_P0_PE2_N----------- : $(((DATA & 0x02) >> 1))
echo RST_P0_PE3_N,---------- : $((DATA & 0x01))
FPGA_REG=21
DATA=$(i2cget -y $I2CBUS $FPGAADDR "$(printf '0x%x' $FPGA_REG)")
echo ----------FPGAreg$FPGA_REG-------------------------
echo RST_P0_SASHD_0_R_N----- : $(((DATA & 0x80) >> 7))
echo RST_P0_SASHD_1_R_N----- : $(((DATA & 0x40) >> 6))
echo RST_P1_3V3_N----------- : $(((DATA & 0x20) >> 5))
echo RST_P1_OCU1_R_N-------- : $(((DATA & 0x10) >> 4))
echo RST_P1_PE0_N----------- : $(((DATA & 0x08) >> 3))
echo RST_P1_PE1_N----------- : $(((DATA & 0x04) >> 2))
echo RST_P1_PE2_N----------- : $(((DATA & 0x02) >> 1))
echo RST_P1_PE3_N,---------- : $((DATA & 0x01))
FPGA_REG=22
DATA=$(i2cget -y $I2CBUS $FPGAADDR "$(printf '0x%x' $FPGA_REG)")
echo ----------FPGAreg$FPGA_REG-------------------------
echo RST_BMC_RSTBTN_OUT_N_CPLD : $(((DATA & 0x80) >> 7))
echo RST_PE_NVME0_N----------- : $(((DATA & 0x40) >> 6))
echo RST_PE_NVME1_N----------- : $(((DATA & 0x20) >> 5))
echo RST_PE_NVME2_N----------- : $(((DATA & 0x10) >> 4))
echo RST_PE_NVME3_N----------- : $(((DATA & 0x08) >> 3))
echo RST_PE_SLOT1_N----------- : $(((DATA & 0x04) >> 2))
echo RST_PE_SLOT2_N----------- : $(((DATA & 0x02) >> 1))
echo RST_PE_SLOT3_N----------- : $((DATA & 0x01))
FPGA_REG=23
DATA=$(i2cget -y $I2CBUS $FPGAADDR "$(printf '0x%x' $FPGA_REG)")
echo ----------FPGAreg$FPGA_REG-------------------------
echo RST_PE_SLOT4_N----------- : $(((DATA & 0x80) >> 7))
echo RST_PE_SLOT5_N----------- : $(((DATA & 0x40) >> 6))
echo RST_RSMRST_P0_N---------- : $(((DATA & 0x20) >> 5))
echo RST_RSMRST_P1_N---------- : $(((DATA & 0x10) >> 4))
echo RST_SYSTEM_BTN_CPLD_N---- : $(((DATA & 0x08) >> 3))
echo RST_VSBPWR_BMC_BUF_N----- : $(((DATA & 0x04) >> 2))
@@ -0,0 +1,398 @@
#!/bin/bash
echo
echo "-----FPGA Ethanol<x> CRB Register Dump Utility"
echo
I2CBUS=2
FPGAADDR=0x50
# FPGA FW Version Information
FPGA_REG=39
DATA=$(i2cget -y $I2CBUS $FPGAADDR "$(printf "0x%x" $FPGA_REG)")
MAJOR=$((DATA >> 4))
MINOR=$((DATA & 0x0F))
echo FPGA FW Version: $MAJOR.$MINOR
# IP register information
FPGA_REG=0
IP_REG_MAX=3
printf "IP Address Registers: "
while [ $FPGA_REG -le $IP_REG_MAX ]
do
# not using printf as integer and hex values are the same for this use
DATA=$(i2cget -y $I2CBUS $FPGAADDR $FPGA_REG)
if [ $FPGA_REG -ne $IP_REG_MAX ] ; then
printf "%d." "$DATA"
else
printf "%d\n\n" "$DATA"
fi
((FPGA_REG=FPGA_REG+1))
done
# VDD block - Addresses 16 - 23
FPGA_REG=16
VDD_REG_MAX=23
SOCKET=0
while [ $FPGA_REG -le $VDD_REG_MAX ]
do
VDD_LOOP_CNT=0
while [ $VDD_LOOP_CNT -le 1 ]
do
if [ $VDD_LOOP_CNT -eq 0 ] ; then
VDD_LOOP_CNT_TXT="Enables"
else
VDD_LOOP_CNT_TXT="Power Goods"
fi
DATA=$(i2cget -y $I2CBUS $FPGAADDR "$(printf "0x%x" $FPGA_REG)")
echo ----------FPGAreg$FPGA_REG-----P$SOCKET VDD "$VDD_LOOP_CNT_TXT"
echo VDD_18_DUAL : $((DATA & 0x01))
echo VDD_SOC_DUAL: $(((DATA & 0x02) >> 1))
echo VDD_SPD_ABCD: $(((DATA & 0x04) >> 2))
echo VDD_VPP_ABCD: $(((DATA & 0x08) >> 3))
echo VDD_VTT_ABCD: $(((DATA & 0x10) >> 4))
echo VDD_MEM_ABCD: $(((DATA & 0x20) >> 5))
echo VDD_SPD_EFGH: $(((DATA & 0x40) >> 6))
echo VDD_VPP_EFGH: $(((DATA & 0x80) >> 7))
((FPGA_REG=FPGA_REG+1))
DATA=$(i2cget -y $I2CBUS $FPGAADDR "$(printf "0x%x" $FPGA_REG)")
echo VDD_VTT_EFGH : $((DATA & 0x01))
echo VDD_MEM_EFGH : $(((DATA & 0x02) >> 1))
echo VDD_18_RUN-- : $(((DATA & 0x04) >> 2))
echo VDD_SOC_RUN- : $(((DATA & 0x08) >> 3))
echo VDD_CORE_RUN : $(((DATA & 0x10) >> 4))
((FPGA_REG=FPGA_REG+1))
((VDD_LOOP_CNT=VDD_LOOP_CNT+1))
done
((SOCKET=SOCKET+1))
done
# Power State/Reset Data
FPGA_REG=24
DATA=$(i2cget -y $I2CBUS $FPGAADDR "$(printf "0x%x" $FPGA_REG)")
echo ----------FPGAreg$FPGA_REG-----Power state Information:
echo P0_SLP_S5_L--- : $((DATA & 0x01))
echo P0_SLP_S3_L--- : $(((DATA & 0x02) >> 1))
echo ATX_PS_ON----- : $(((DATA & 0x04) >> 2))
echo FPGA_5_DUAL_EN : $(((DATA & 0x08) >> 3))
# Power Good information
FPGA_REG=25
DATA=$(i2cget -y $I2CBUS $FPGAADDR "$(printf "0x%x" $FPGA_REG)")
echo ----------FPGAreg$FPGA_REG-----Power Good Information:
echo VDD_33_DUAL_PG------- : $((DATA & 0x01))
echo FPGA_VDD_CORE_DUAL_PG : $(((DATA & 0x02) >> 1))
echo MGMT_VDD_VPP_DUAL_PG- : $(((DATA & 0x04) >> 2))
echo MGMT_VDD_MEM_DUAL_PG- : $(((DATA & 0x08) >> 3))
echo MGMT_VDD_CORE_DUAL_PG : $(((DATA & 0x10) >> 4))
echo ATX_PWR_OK----------- : $(((DATA & 0x20) >> 5))
# Power and Reset Signals
FPGA_REG=26
PWRRST_REG_MAX=27
SOCKET=0
while [ $FPGA_REG -le $PWRRST_REG_MAX ]
do
DATA=$(i2cget -y $I2CBUS $FPGAADDR "$(printf "0x%x" $FPGA_REG)")
echo ----------FPGAreg$FPGA_REG-----P$SOCKET Power and Reset Signals:
echo RSMRST_L----------------- : $((DATA & 0x01))
echo PWR_GOOD----------------- : $(((DATA & 0x02) >> 1))
echo PWRGD_OUT---------------- : $(((DATA & 0x04) >> 2))
echo FPGA_PWROK_RESET_BUF_EN_L : $(((DATA & 0x08) >> 3))
echo 33_PWROK----------------- : $(((DATA & 0x10) >> 4))
echo VDD_CORE_RUN_PWROK------- : $(((DATA & 0x20) >> 5))
echo VDD_SOC_RUN_PWROK-------- : $(((DATA & 0x40) >> 6))
echo 33_RESET_L--------------- : $(((DATA & 0x80) >> 7))
((FPGA_REG=FPGA_REG+1))
done
# Processor and power cable preset signals
FPGA_REG=28
DATA=$(i2cget -y $I2CBUS $FPGAADDR "$(printf "0x%x" $FPGA_REG)")
echo ----------FPGAreg$FPGA_REG-----Processor and power cable preset signals:
echo P0_PRESENT_L--------------------- : $((DATA & 0x01))
echo P0_VDD_MEM_ABCD_12_RUN_PLUG_PRSNT : $(((DATA & 0x02) >> 1))
echo P0_VDD_MEM_EFGH_12_RUN_PLUG_PRSNT : $(((DATA & 0x04) >> 2))
echo P0_VDD_12_RUN_PLUG_PRSNT--------- : $(((DATA & 0x08) >> 3))
echo P1_PRESENT_L--------------------- : $(((DATA & 0x10) >> 4))
echo P1_VDD_MEM_ABCD_12_RUN_PLUG_PRSNT : $(((DATA & 0x20) >> 5))
echo P1_VDD_MEM_EFGH_12_RUN_PLUG_PRSNT : $(((DATA & 0x40) >> 6))
echo P1_VDD_12_RUN_PLUG_PRSNT--------- : $(((DATA & 0x80) >> 7))
# Board LEDs
FPGA_REG=29
DATA=$(i2cget -y $I2CBUS $FPGAADDR "$(printf "0x%x" $FPGA_REG)")
echo ----------FPGAreg$FPGA_REG-----LED States:
echo PWR_GOOD_LED--- : $((DATA & 0x01))
echo PWROK_LED------ : $(((DATA & 0x02) >> 1))
echo RESET_LED_L---- : $(((DATA & 0x04) >> 2))
echo P0_PROCHOT_LED- : $(((DATA & 0x08) >> 3))
echo P1_PROCHOT_LED- : $(((DATA & 0x10) >> 4))
# VR thermal errors
FPGA_REG=30
DATA=$(i2cget -y $I2CBUS $FPGAADDR "$(printf "0x%x" $FPGA_REG)")
echo ----------FPGAreg$FPGA_REG-----VR Thermal Errors:
echo P0_VDD_MEM_ABCD_SUS_VRHOT_L : $((DATA & 0x01))
echo P0_VDD_MEM_EFGH_SUS_VRHOT_L : $(((DATA & 0x02) >> 1))
echo P0_VDD_SOC_RUN_VRHOT_L----- : $(((DATA & 0x04) >> 2))
echo P0_VDD_CORE_RUN_VRHOT_L---- : $(((DATA & 0x08) >> 3))
echo P1_VDD_MEM_ABCD_SUS_VRHOT_L : $(((DATA & 0x10) >> 4))
echo P1_VDD_MEM_EFGH_SUS_VRHOT_L : $(((DATA & 0x20) >> 5))
echo P1_VDD_SOC_RUN_VRHOT_L----- : $(((DATA & 0x40) >> 6))
echo P1_VDD_CORE_RUN_VRHOT_L---- : $(((DATA & 0x80) >> 7))
# Processor and board Thermal Errors
FPGA_REG=31
DATA=$(i2cget -y $I2CBUS $FPGAADDR "$(printf "0x%x" $FPGA_REG)")
echo ----------FPGAreg$FPGA_REG-----Processor and board Thermal Errors:
echo FPGA_P0_THERMTRIP_L : $((DATA & 0x01))
echo FPGA_P1_THERMTRIP_L : $(((DATA & 0x02) >> 1))
echo SENSOR_THERM_L----- : $(((DATA & 0x04) >> 2))
echo P0_PROCHOT_L------- : $(((DATA & 0x08) >> 3))
echo P1_PROCHOT_L------- : $(((DATA & 0x10) >> 4))
# AST2500 control Signals
FPGA_REG=32
DATA=$(i2cget -y $I2CBUS $FPGAADDR "$(printf "0x%x" $FPGA_REG)")
echo ----------FPGAreg$FPGA_REG-----AST2500 Control Signals:
echo MGMT_ASSERT_BMC_READY--- : $((DATA & 0x01))
echo MGMT_ASSERT_LOCAL_LOCK-- : $(((DATA & 0x02) >> 1))
echo MGMT_ASSERT_PWR_BTN----- : $(((DATA & 0x04) >> 2))
echo MGMT_ASSERT_RST_BTN----- : $(((DATA & 0x08) >> 3))
echo MGMT_ASSERT_NMI_BTN----- : $(((DATA & 0x10) >> 4))
echo MGMT_ASSERT_P0_PROCHOT-- : $(((DATA & 0x20) >> 5))
echo MGMT_ASSERT_P1_PROCHOT-- : $(((DATA & 0x40) >> 6))
echo MGMT_ASSERT_WARM_RST_BTN : $(((DATA & 0x80) >> 7))
# FPGA processor control signals
FPGA_REG=33
DATA=$(i2cget -y $I2CBUS $FPGAADDR "$(printf "0x%x" $FPGA_REG)")
echo ----------FPGAreg$FPGA_REG-----FPGA processor Control Signals:
echo ASSERT_P0_PWROK_L-------- : $((DATA & 0x01))
echo ASSERT_P0_RESET_L-------- : $(((DATA & 0x02) >> 1))
echo ASSERT_P0_PROCHOT_L------ : $(((DATA & 0x04) >> 2))
echo MGMT_SYS_MON_P0_PROCHOT_L : $(((DATA & 0x08) >> 3))
echo ASSERT_P1_PWROK_L-------- : $(((DATA & 0x10) >> 4))
echo ASSERT_P1_RESET_L-------- : $(((DATA & 0x20) >> 5))
echo ASSERT_P1_PROCHOT_L------ : $(((DATA & 0x40) >> 6))
echo MGMT_SYS_MON_P1_PROCHOT_L : $(((DATA & 0x80) >> 7))
# Buttons/Resets
FPGA_REG=34
DATA=$(i2cget -y $I2CBUS $FPGAADDR "$(printf "0x%x" $FPGA_REG)")
echo ----------FPGAreg$FPGA_REG-----Button and Reset Signals:
echo PWR_BTN_L----- : $((DATA & 0x01))
echo RST_BTN_L----- : $(((DATA & 0x02) >> 1))
echo WARM_RST_BTN_L : $(((DATA & 0x04) >> 2))
echo NMI_BTN_L----- : $(((DATA & 0x08) >> 3))
echo FPGA_BTN_L---- : $(((DATA & 0x10) >> 4))
echo P0_PWR_BTN_L-- : $(((DATA & 0x20) >> 5))
echo P0_SYS_RESET_L : $(((DATA & 0x40) >> 6))
echo P0_KBRST_L---- : $(((DATA & 0x80) >> 7))
# Miscellaneous Block 1
FPGA_REG=35
DATA=$(i2cget -y $I2CBUS $FPGAADDR "$(printf "0x%x" $FPGA_REG)")
echo ----------FPGAreg$FPGA_REG-----Miscellaneous 35 Signals:
echo MGMT_AC_LOSS_L---------- : $((DATA & 0x01))
echo P0_NV_FORCE_SELF_REFRESH : $(((DATA & 0x02) >> 1))
echo P1_NV_FORCE_SELF_REFRESH : $(((DATA & 0x04) >> 2))
echo P0_LOCAL_SPI_ROM_SEL_L-- : $(((DATA & 0x08) >> 3))
echo PCIE_SLOT4_HP_FON_L----- : $(((DATA & 0x10) >> 4))
echo P0_NMI_SYNC_FLOOD_L----- : $(((DATA & 0x20) >> 5))
echo FPGA_LPC_RST_L---------- : $(((DATA & 0x40) >> 6))
echo MGMT_SMBUS_ALERT_L------ : $(((DATA & 0x80) >> 7))
# Miscellaneous Block 2
FPGA_REG=36
SHUTDOWNERR=0
DATA=$(i2cget -y $I2CBUS $FPGAADDR "$(printf "0x%x" $FPGA_REG)")
echo ----------FPGAreg$FPGA_REG-----Miscellaneous 36 Signals:
echo physical_pg------------------- : $((DATA & 0x01))
echo shutdown_error---------------- : $(((DATA & 0x02) >> 1))
SHUTDOWNERR=$(((DATA & 0x02) >> 1))
echo P0_PRESENT_HDT---------------- : $(((DATA & 0x04) >> 2))
echo P1_PRESENT_HDT---------------- : $(((DATA & 0x08) >> 3))
echo DAP_EXT_P0_CORE_RUN_VOLTAGE_PG : $(((DATA & 0x10) >> 4))
echo FPGA_BRD_ID------------------- : $(((DATA & 0x20) >> 5))
echo FPGA_BRD_ID------------------- : $(((DATA & 0x40) >> 6))
echo MGMT_FPGA_RSVD---------------- : $(((DATA & 0x80) >> 7))
# Switch S1
FPGA_REG=37
DATA=$(i2cget -y $I2CBUS $FPGAADDR "$(printf "0x%x" $FPGA_REG)")
echo ----------FPGAreg$FPGA_REG-----Switch Bank S1:
if [ $((DATA & 0x01)) -eq 1 ] ; then
echo "FPGA_SW1-1 - OFF - P0 PwrReg PU with Proc"
else
echo "FPGA_SW1-1 - ON - P0 PwrReg PU without Proc"
fi
if [ $(((DATA & 0x02) >> 1)) -eq 1 ] ; then
echo "FPGA_SW1-1 - OFF - P1 PwrReg PU with Proc"
else
echo "FPGA_SW1-1 - ON - P1 PwrReg PU without Proc"
fi
if [ $(((DATA & 0x04) >> 2)) -eq 1 ] ; then
echo "FPGA_SW1-3 - OFF - ATX Connectors Valid"
else
echo "FPGA_SW1-3 - ON - ATX Connectors Ignored"
fi
if [ $(((DATA & 0x08) >> 3)) -eq 1 ] ; then
echo "FPGA_SW1-4 - OFF - Wait for BMC Boot"
else
echo "FPGA_SW1-4 - ON - Do Not Wait for BMC Boot"
fi
if [ $(((DATA & 0x10) >> 4)) -eq 1 ] ; then
echo "FPGA_SW1-5 - OFF - MemPwrReg PU after ATX"
else
echo "FPGA_SW1-5 - ON - MemPwrReg PU before ATX"
fi
if [ $(((DATA & 0x20) >> 5)) -eq 1 ] ; then
echo "FPGA_SW1-6 - OFF - DAP CORE Reg Bypass DISABLED"
else
echo "FPGA_SW1-6 - ON - DAP CORE Reg Bypass ENABLED"
fi
if [ $(((DATA & 0x40) >> 6)) -eq 1 ] ; then
echo "FPGA_SW1-7 - OFF - Bypass P0 in HDT JTAG Chain DISABLED"
else
echo "FPGA_SW1-7 - ON - Bypass P0 in HDT JTAG Chain ENABLED"
fi
if [ $(((DATA & 0x80) >> 7)) -eq 1 ] ; then
echo "FPGA_SW1-8 - OFF - Bypass P1 in HDT JTAG Chain DISABLED"
else
echo "FPGA_SW1-8 - ON - Bypass P1 in HDT JTAG Chain ENABLED"
fi
# Switch S2
FPGA_REG=38
DATA=$(i2cget -y $I2CBUS $FPGAADDR "$(printf "0x%x" $FPGA_REG)")
echo ----------FPGAreg$FPGA_REG-----Switch Bank S2:
if [ $((DATA & 0x01)) -eq 1 ] ; then
echo "FPGA_SW2-1 - OFF - Boot from SPI ROM behind BMC"
else
echo "FPGA_SW2-1 - ON - Boot from P0 local SPI ROM"
fi
if [ $(((DATA & 0x02) >> 1)) -eq 1 ] ; then
echo "FPGA_SW2-2 - OFF - PCIe SLOT4 hot plug forced PwrON without driver"
else
echo "FPGA_SW2-2 - ON - PCIe SLOT4 hot plug NOT forced PwrON without driver"
fi
if [ $(((DATA & 0x04) >> 2)) -eq 1 ] ; then
echo "FPGA_SW2-3 - OFF - SMI testing DISABLED"
else
echo "FPGA_SW2-3 - ON - SMI testing ENABLED"
fi
if [ $(((DATA & 0x08) >> 3)) -eq 1 ] ; then
echo "FPGA_SW2-4 - OFF - PROCHOT testing DISABLED"
else
echo "FPGA_SW2-4 - ON - PROCHOT testing ENABLED"
fi
if [ $(((DATA & 0x10) >> 4)) -eq 1 ] ; then
echo "FPGA_SW2-5 - OFF - PwrCycle on post code C0 DISABLED"
else
echo "FPGA_SW2-5 - ON - PwrCycle on post code C0 ENABLED"
fi
if [ $(((DATA & 0x20) >> 5)) -eq 1 ] ; then
echo "FPGA_SW2-6 - OFF - PwrCycle Px DISABLED"
else
echo "FPGA_SW2-6 - ON - PwrCycle - Px Present - RESET_L | Px Not Present VR PwrGood"
fi
if [ $(((DATA & 0x40) >> 6)) -eq 1 ] ; then
echo "FPGA_SW2-7 - OFF - BMC IP Address display DISABLED"
else
echo "FPGA_SW2-7 - ON - BMC IP Address display ENABLED"
fi
if [ $(((DATA & 0x80) >> 7)) -eq 1 ] ; then
echo "FPGA_SW1-8 - OFF - FORCE_SELFREFRESH support diabled"
else
echo "FPGA_SW1-8 - ON - FORCE_SELFREFRESH support diabled"
fi
# Powerup Error Group
echo ------------------------Power and Thermal Error Group
if [ $SHUTDOWNERR = 0 ] ; then
echo NO Shutdown Errors Detected
fi
FPGA_REG=40
DATA=$(i2cget -y $I2CBUS $FPGAADDR "$(printf "0x%x" $FPGA_REG)")
if [ $((DATA & 0x0F)) != 0 ] ; then
echo PU Error: PU1$((DATA & 0x0F))
echo "$DATA"
fi
FPGA_REG=41
DATA=$(i2cget -y $I2CBUS $FPGAADDR "$(printf "0x%x" $FPGA_REG)")
if [ $((DATA & 0x07)) != 0 ] ; then
echo PU Error: PU2$((DATA & 0x07))
fi
FPGA_REG=42
DATA=$(i2cget -y $I2CBUS $FPGAADDR "$(printf "0x%x" $FPGA_REG)")
if [ $((DATA & 0x0F)) != 0 ] ; then
echo PU Error: PU1$((DATA & 0x0F))
fi
FPGA_REG=43
DATA=$(i2cget -y $I2CBUS $FPGAADDR "$(printf "0x%x" $FPGA_REG)")
if [ $((DATA & 0x07)) != 0 ] ; then
echo PU Error: PU4$((DATA & 0x07))
fi
FPGA_REG=44
DATA=$(i2cget -y $I2CBUS $FPGAADDR "$(printf "0x%x" $FPGA_REG)")
if [ $((DATA & 0x03)) != 0 ] ; then
echo PU Error: PU5$((DATA & 0x03))
fi
FPGA_REG=45
DATA=$(i2cget -y $I2CBUS $FPGAADDR "$(printf "0x%x" $FPGA_REG)")
if [ $((DATA & 0x07)) != 0 ] ; then
echo PU Error: PU6$((DATA & 0x07))
fi
# Powerdown Error Group
FPGA_REG=46
DATA=$(i2cget -y $I2CBUS $FPGAADDR "$(printf "0x%x" $FPGA_REG)")
if [ $((DATA & 0x0F)) != 0 ] ; then
echo PD Error: PD1$((DATA & 0x0F))
fi
FPGA_REG=47
DATA=$(i2cget -y $I2CBUS $FPGAADDR "$(printf "0x%x" $FPGA_REG)")
if [ $((DATA & 0x07)) != 0 ] ; then
echo PD Error: PD2$((DATA & 0x07))
fi
FPGA_REG=48
DATA=$(i2cget -y $I2CBUS $FPGAADDR "$(printf "0x%x" $FPGA_REG)")
if [ $((DATA & 0x0F)) != 0 ] ; then
echo PD Error: PD3$((DATA & 0x0F))
fi
FPGA_REG=49
DATA=$(i2cget -y $I2CBUS $FPGAADDR "$(printf "0x%x" $FPGA_REG)")
if [ $((DATA & 0x07)) != 0 ] ; then
echo PD Error: PD4$((DATA & 0x07))
fi
FPGA_REG=50
DATA=$(i2cget -y $I2CBUS $FPGAADDR "$(printf "0x%x" $FPGA_REG)")
if [ $((DATA & 0x03)) != 0 ] ; then
echo PD Error: PD5$((DATA & 0x03))
fi
FPGA_REG=51
DATA=$(i2cget -y $I2CBUS $FPGAADDR "$(printf "0x%x" $FPGA_REG)")
if [ $((DATA & 0x03)) != 0 ] ; then
echo PD Error: PD6$((DATA & 0x03))
fi
FPGA_REG=52
DATA=$(i2cget -y $I2CBUS $FPGAADDR "$(printf "0x%x" $FPGA_REG)")
if [ $((DATA & 0x0F)) != 0 ] ; then
echo Thermal Error: H_0$((DATA & 0x0F))
fi
echo ------------- end of data -----------------
@@ -0,0 +1,11 @@
[Unit]
Description=Transfer IP address to the FPGA
BindsTo=sys-subsystem-net-devices-eth0.device
After=sys-subsystem-net-devices-eth0.device
[Service]
Type=simple
ExecStart=/usr/bin/ip-to-fpga.sh
[Install]
WantedBy=multi-user.target
@@ -0,0 +1,33 @@
#!/bin/bash
OLD_IP=""
while true
do
IP=$(ip a | awk '/inet.*global/ {split ($2,A,"/"); print A[1]}')
if [ "${IP}" != "${OLD_IP}" ]
then
if [ -n "${IP}" ]
then
IP_1=$(echo "${IP}" | cut -d "." -f 1)
IP_2=$(echo "${IP}" | cut -d "." -f 2)
IP_3=$(echo "${IP}" | cut -d "." -f 3)
IP_4=$(echo "${IP}" | cut -d "." -f 4)
else
IP_1=0
IP_2=0
IP_3=0
IP_4=0
fi
echo "Transfer current IP address (${IP_1}.${IP_2}.${IP_3}.${IP_4}) to the FPGA"
i2cset -y 2 0x50 0 "${IP_1}"
i2cset -y 2 0x50 1 "${IP_2}"
i2cset -y 2 0x50 2 "${IP_3}"
i2cset -y 2 0x50 3 "${IP_4}"
OLD_IP=${IP}
fi
sleep 5
done
@@ -0,0 +1,25 @@
DESCRIPTION = "Transfer BMC IP address to the FPGA"
PR = "r1"
LICENSE = "Apache-2.0"
LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/Apache-2.0;md5=89aea4e17d99a7cacdbeed46a0096b10"
inherit systemd
SRC_URI = " file://ip-to-fpga.sh \
file://ip-to-fpga.service \
"
S = "${WORKDIR}"
DEPENDS = "systemd"
RDEPENDS:${PN} = "bash"
SYSTEMD_SERVICE:${PN} = "ip-to-fpga.service"
do_install() {
install -d ${D}${bindir}
install -m 0755 ${S}/ip-to-fpga.sh ${D}${bindir}/
install -d ${D}${systemd_system_unitdir}
install -m 0644 ${S}/ip-to-fpga.service ${D}${systemd_system_unitdir}
}
@@ -0,0 +1,50 @@
SUMMARY = "OpenBMC for AMD - Applications"
PR = "r1"
inherit packagegroup
PROVIDES = "${PACKAGES}"
PACKAGES = " \
${PN}-chassis \
${PN}-fans \
${PN}-flash \
${PN}-system \
"
PROVIDES += "virtual/obmc-chassis-mgmt"
PROVIDES += "virtual/obmc-fan-mgmt"
PROVIDES += "virtual/obmc-flash-mgmt"
PROVIDES += "virtual/obmc-system-mgmt"
RPROVIDES:${PN}-chassis += "virtual-obmc-chassis-mgmt"
RPROVIDES:${PN}-fans += "virtual-obmc-fan-mgmt"
RPROVIDES:${PN}-flash += "virtual-obmc-flash-mgmt"
RPROVIDES:${PN}-system += "virtual-obmc-system-mgmt"
SUMMARY:${PN}-chassis = "AMD Chassis"
RDEPENDS:${PN}-chassis = " \
x86-power-control \
obmc-host-failure-reboots \
"
SUMMARY:${PN}-fans = "AMD Fans"
RDEPENDS:${PN}-fans = " \
phosphor-pid-control \
"
SUMMARY:${PN}-flash = "AMD Flash"
RDEPENDS:${PN}-flash = " \
phosphor-software-manager \
"
SUMMARY:${PN}-system = "AMD System"
RDEPENDS:${PN}-system = " \
amd-fpga \
bmcweb \
dbus-sensors \
entity-manager \
ipmitool \
phosphor-hostlogger \
webui-vue \
srvcfg-manager \
"