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
@@ -0,0 +1,20 @@
SUMMARY = "ME time sync"
PR = "r1"
LICENSE = "Apache-2.0"
LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/Apache-2.0;md5=89aea4e17d99a7cacdbeed46a0096b10"
inherit allarch
inherit obmc-phosphor-systemd
RDEPENDS:${PN} += "bash"
S = "${WORKDIR}"
SRC_URI += "file://me-time-sync.sh"
do_install() {
install -d ${D}${bindir}
install -m 0755 ${S}/me-time-sync.sh ${D}${bindir}/me-time-sync.sh
}
SYSTEMD_SERVICE:${PN} += "me-time-sync.service"
@@ -0,0 +1,18 @@
[Unit]
Description=Sync time from ME
Wants=ipmb.service
After=ipmb.service
#ipmb may not ready for communication when
#me-time-sync start, add some retry
[Service]
Type=simple
Restart=always
StartLimitInterval=90
StartLimitBurst=5
ExecStart=/usr/bin/me-time-sync.sh
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target
@@ -0,0 +1,25 @@
#!/bin/bash
set -e
# Get time from ME via ipmb
# The last 4 bytes are the epoch time, e.g.
# (iyyyyay) 0 11 0 72 0 4 18 169 82 95
ret=$(busctl call xyz.openbmc_project.Ipmi.Channel.Ipmb "/xyz/openbmc_project/Ipmi/Channel/Ipmb" org.openbmc.Ipmb sendRequest yyyyay 0x01 0x0a 0x00 0x48 0)
IFS=' ' read -r -a a <<< "${ret}"
if [ "${a[1]}" -ne 0 ]
then
echo "Failed to get time from ME: ${ret}"
exit 1
fi
t0=$((a[7]))
t1=$((a[8]*256))
t2=$((a[9]*256*256))
t3=$((a[10]*256*256*256))
t=$((t0+t1+t2+t3))
echo "Setting date to ${t}"
date -s @${t}