#!/bin/sh

set -eu

REVISION="$(sed -ne '/^Revision/s/^Revision\s*:\s*\(.*\)/\1/p' /proc/cpuinfo)"
REVISION="${REVISION:+0x}${REVISION}"

if [ -n "$REVISION" ]; then
    IDENTIFIER="vc4"
    DRIVER="vc4"
    SOC=$((REVISION >> 12 & 0xF))

    if [ "$SOC" -eq 4 ]; then
        # This is a 2712 (a Pi 5). Adjust the driver when an alternate display
        # is in use
        case /dev/dri/by-path/*-card in
            /dev/dri/by-path/*.vec-card)
                IDENTIFIER="rp1"
                DRIVER="rp1-vec"
                ;;
            /dev/dri/by-path/*.d[sp]i-card)
                IDENTIFIER="rp1"
                DRIVER="rp1-dsi|rp1-dpi"
                ;;
        esac
    fi

    TMPFILE="/etc/X11/xorg.conf.d/99-v3d.conf.tmp"
    trap 'rm -f $TMPFILE' EXIT
    sed -e "s/IDENTIFIER/${IDENTIFIER}/; s/DRIVER/${DRIVER}/" << EOF > "$TMPFILE"
Section "OutputClass"
  Identifier "IDENTIFIER"
  MatchDriver "DRIVER"
  Driver "modesetting"
  Option "PrimaryGPU" "true"
EndSection
EOF
    mv "$TMPFILE" "/etc/X11/xorg.conf.d/99-v3d.conf"
    trap - EXIT
fi
