#!/bin/sh

set -eux

unload () {
  if modprobe -r "$1" 2>&1;
  then echo ok
  else echo fail
  fi
}

wait_unload() {
  while sleep 1; do
    output="$(unload "$1")"
    case "$output" in
      *is\ in\ use*) :;;
      *ok*) return 0;;
      *) echo "modprobe said: $output"; echo giving up; return 1;
    esac
  done
}

wait_unload i2c_hid_acpi
wait_unload i2c_hid
modprobe i2c_hid
modprobe i2c_hid_acpi