#!/bin/sh

SYS_VENDOR=
BOARD_NAME=
BOARD_VENDOR=
BOARD_REV=
FREQ_CORRECTION_PPM=

if [ -z "$DEVPATH" ]; then
    echo "no DEVPATH in environment" >&2
    exit 1
fi

[ -f /sys/class/dmi/id/sys_vendor ] && \
    SYS_VENDOR="$(cat /sys/class/dmi/id/sys_vendor)"

[ -f /sys/class/dmi/id/board_name ] && \
    BOARD_NAME="$(cat /sys/class/dmi/id/board_name)"

[ -f /sys/class/dmi/id/board_vendor ] && \
    BOARD_VENDOR="$(cat /sys/class/dmi/id/board_vendor)"

[ -f /sys/class/spx-board-info/id/revision ] && \
    BOARD_REV="$(cat /sys/class/spx-board-info/id/revision)"

[ "$SYS_VENDOR" = "SpinetiX" ] || exit 0
[ "$BOARD_NAME" = "HMP400" ] || exit 0
[ "$BOARD_VENDOR" = "MSC Technologies GmbH" ] || exit 0

case "$BOARD_REV" in
    A*) # DV4
        FREQ_CORRECTION_PPM="-280"
        ;;
    B*) # DV5+
        FREQ_CORRECTION_PPM="-110"
        ;;
    *) # unknown revision or engineering sample
        FREQ_CORRECTION_PPM=
        ;;
esac

[ -n "$FREQ_CORRECTION_PPM" ] || exit 0

XTDCAL=/sys"$DEVPATH"/device/xtdcal

if ! [ -f "$XTDCAL" ]; then
    echo "missing $XTDCAL" >&2
    exit 1
fi

echo "$FREQ_CORRECTION_PPM" > "$XTDCAL"
