| #!/bin/bash |
| dtbo_name="${1:?Missing DTBO name}" |
| dtbo=/usr/share/overlay-dts/"${dtbo_name}".dtbo |
| if [[ ! -e "$dtbo" ]]; then |
| echo "DTBO file missing: $dtbo" >&2 |
| exit 1 |
| fi |
| |
| modprobe -v dtbocfg || exit |
| overlays=/sys/kernel/config/device-tree/overlays |
| if [[ ! -e "$overlays" ]]; then |
| END=$((SECONDS+10)) |
| echo 'Waiting for dtbocfg to set up' >&2 |
| while [[ ! -e "$overlays" ]]; do |
| if (( SECONDS >= END )); then |
| echo 'Timed out waiting for dtbocfg' >&2 |
| exit 1 |
| fi |
| sleep 0.1 |
| done |
| fi |
| |
| dtbodir="$overlays"/"$dtbo_name" |
| [[ -d "$dtbodir" ]] || mkdir -v "$dtbodir" || exit |
| if [[ "$(cat "$dtbodir"/status 2>/dev/null)" != "1" ]]; then |
| echo "Writing dtbo $dtbo_name" >&2 |
| cat "$dtbo" >"$dtbodir"/dtbo |
| echo "Enabling dtbo $dtbo_name" >&2 |
| echo 1 >"$dtbodir"/status |
| fi |