The branch main has been updated by adrian: URL: https://cgit.FreeBSD.org/src/commit/?id=d128ddf32e87a672dbbbc26cfece71e241e0ffa0
commit d128ddf32e87a672dbbbc26cfece71e241e0ffa0 Author: Abdelkader Boudih <[email protected]> AuthorDate: 2026-07-09 02:52:29 +0000 Commit: Adrian Chadd <[email protected]> CommitDate: 2026-07-09 02:52:30 +0000 fwcam: retry ISO enable after re-powering camera Some IIDC cameras power down the sensor when inactive (e.g. lens cover closed) and reject ISO enable with EIO. Re-power the camera and retry once before failing. Reviewed by: adrian Differential Revision: https://reviews.freebsd.org/D58101 --- sys/dev/firewire/fwcam.c | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/sys/dev/firewire/fwcam.c b/sys/dev/firewire/fwcam.c index c5e5cf545fe9..234dd41eedf1 100644 --- a/sys/dev/firewire/fwcam.c +++ b/sys/dev/firewire/fwcam.c @@ -429,7 +429,22 @@ fwcam_iso_start(struct fwcam_softc *sc) } err = fwcam_write_quadlet(sc, IIDC_ISO_EN, IIDC_ISO_EN_ON); - if (err) { + if (err == EIO) { + /* + * Cameras with a lens cover might power down the sensor + * when the cover is closed and reject streaming requests. + * Try to re-power and retry once before giving up. + */ + err = fwcam_power_on(sc); + if (err == 0) + err = fwcam_write_quadlet(sc, IIDC_ISO_EN, + IIDC_ISO_EN_ON); + if (err) { + device_printf(sc->fd.dev, + "ISO enable refused (lens cover closed?)\n"); + goto fail; + } + } else if (err) { device_printf(sc->fd.dev, "failed to enable ISO: %d\n", err); goto fail;
