#!/bin/bash # Handle camera service around suspend/resume. # # On resume the IPU7 firmware re-authenticates (CSE authenticate_run), # but the ov08x40 sensor is not re-bound to the media-controller graph. # libcamhal then reports "No sensors available", icamerasrc fails to # register properties, and /dev/video50 stays empty — the camera looks # dead to every app until reboot. # # Workaround: after resume, unload + reload ov08x40 and intel_ipu7_isys # so isys re-probes the sensor via ipu_bridge. # # DO NOT unload intel_ipu7_isys pre-suspend: s2idle wake requires the # IPU7 driver to be attached, and unloading it before suspend hangs the # machine on wake. # # The post-resume work runs via systemd-run so it doesn't block the # lock-screen password prompt while modules settle. case "$1" in pre) systemctl stop v4l2-relayd@ipu7.service 2>/dev/null || true ;; post) systemd-run --no-block --unit=camera-resume bash -c ' rmmod ov08x40 2>/dev/null || true rmmod intel_ipu7_isys 2>/dev/null || true sleep 1 modprobe intel_ipu7_isys 2>/dev/null sleep 1 modprobe ov08x40 2>/dev/null systemctl reset-failed v4l2-relayd@ipu7.service 2>/dev/null || true systemctl start v4l2-relayd@ipu7.service 2>/dev/null || true ' ;; esac exit 0