diff options
| author | Abdelkader Boudih <freebsd@seuros.com> | 2026-07-09 02:52:29 +0000 |
|---|---|---|
| committer | Adrian Chadd <adrian@FreeBSD.org> | 2026-07-09 02:52:30 +0000 |
| commit | d128ddf32e87a672dbbbc26cfece71e241e0ffa0 (patch) | |
| tree | 434fbbec9f4271d6ce92863455fe70583cbf5651 | |
| parent | 56d4dee82de1b5c8c77d5be79f7bf4183b327b57 (diff) | |
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
| -rw-r--r-- | sys/dev/firewire/fwcam.c | 17 |
1 files changed, 16 insertions, 1 deletions
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; |
